UI鉴权登录
# 配置用户名密码
默认情况下是不配置用户名密码的。
如果需要可以通过以下配置开启用户名密码验证登录。
magic-api:
security:
username: admin # 登录用的用户名
password: 123456 # 登录用的密码
# 多用户登录
如果需要配置多用户登录,则需要使用自定义鉴权的方式。
/**
* 自定义用户名密码登录
*/
@Component //注入到Spring容器中
public class CustomAuthorizationInterceptor implements AuthorizationInterceptor {
/**
* 配置是否需要登录
*/
@Override
public boolean requireLogin() {
return true;
}
/**
* 根据Token获取User
*/
@Override
public MagicUser getUserByToken(String token) throws MagicLoginException {
if (判断token是否有效) {
return magicUser; // 从token中获取MagicUser对象
}
throw new MagicLoginException("token无效");
}
@Override
public MagicUser login(String username, String password) throws MagicLoginException {
// 根据实际情况进行修改,如查询数据库。。
if("admin".equals(username) && "admin".equals(password)){
// 登录成功后 构造MagicUser对象。
return new MagicUser("1","admin","tokenvalue......");
}
throw new MagicLoginException("用户名或密码不正确");
}
}
当以上配置完成后,可实现多用户登录,此时页面中右下角显示的用户名信息可能不正确,此时需要额外配置
# src/main/resources/application.yml
magic-api:
editor-config: classpath:./magic-editor-config.js #编辑器配置
# src/main/resources/magic-editor-config.js
var MAGIC_EDITOR_CONFIG = {
getMagicTokenValue: function(){
var token = ..........; // 此处自行获取token
return token;
}
}
# 与自身应用集成
# 单独访问
对于需要单独访问的,需要将应用的权限校验对路径/magic/web/**
放行,交给magic-api
处理,其它无需配置
对于magic-api
UI
中对生成出的接口执行测试时,可能会被自身应用权限校验不通过。此时要么模拟测试时将Header
携带上,要么对生成的接口进行放行,如果还需要校验,请看一下几种方式。
# Jar集成
默认情况下就是Jar
集成的方式,此时需要配置编辑器的请求设置
magic-api:
editor-config: classpath:./magic-editor-config.js #编辑器配置
src/main/resources/magic-editor-config.js
文件内容如下:
var MAGIC_EDITOR_CONFIG = {
request: {
beforeSend: function(config){
// 如果是基于Cookie验证的,此处可以不配。
config.headers.token = ...; // 此处自行获取Token
return config;
}
},
getMagicTokenValue: function(){
var token = ..........; // 此处自行获取token
return token;
}
}
# iframe方式
<iframe src="http://xxxx.xx/magic/web/index.html"></iframe>
<script>
// 当跨域时,iframe内是访问不到此处配置的。请改为后台配置,
// 对于需要在header动态添加值时,可通过 http://xxxx.xx/magic/web/index.html?headerName=token&headerValue=value 的方式进行添加
window.MAGIC_EDITOR_CONFIG = {
request: {
beforeSend: function(config){
// 如果是基于Cookie验证的,此处可以不配。
config.headers.token = ...; // 此处自行获取Token
return config;
}
},
getMagicTokenValue: function(){
var token = ..........; // 此处自行获取token
return token;
}
}
</script>
上次更新: 2023-03-23 13:11:51