grit-client-solon-plugin
<dependency>
<groupId>org.noear</groupId>
<artifactId>grit-client-solon-plugin</artifactId>
<version>2.0.1</version>
</dependency>
1、描述
(使用时,需要配置“企业版 Licence”)基于 grit 构建,提供单点登录(SSO)和签权服务。可与 server 同时使用,实现单体效果;也可以分开使用,实现中间件效果。主要接口:
接口 | 获取 | 说明 |
---|---|---|
ResourceService | GritClient.global().resource() | 资源接口 |
ResourceLinkService | GritClient.global().resourceLink() | 资源关联接口 |
ResourceSchemaService | GritClient.global().resourceSchema() | 资源架构接口(用于导入导出空间资源) |
SubjectService | GritClient.global().subject() | 主体接口 |
SubjectLinkService | GritClient.global().subjectLink() | 主体关联接口 |
AuthService | GritClient.global().auth() | 签权接口 |
可以直接使用(基于 solon-auth 接口规范),或者对接 sa-token 之类的鉴权框架。
2、配置示例
- 作为纯客户端使用
gritclient:
server: "http://localhost:8081"
token: "B6uWZDYUm4kMscdEAERXQ2wMBW1nLL0j"
- 与服务端同体使用
不需要配置。自动转为 jdbc 模式
3、代码示例
- 登录
@Controller
public class LoginController {
@Mapping("login")
public Result login(String username, String password) throws Exception {
Subject subject = GritClient.global().auth().login(username, password);
if (subject == null || subject.subject_id == 0) {
return Result.failure();
} else {
return Result.succeed(subject);
}
}
}
- 鉴权配置(支持 solon-auth 接口规范)
public class AuthProcessorImpl extends GritAuthProcessor {
@Override
protected long getSubjectId() {
return Context.current().sessionAsLong("user_id");
}
}
@Configuration
public class AutoConfig {
@Bean
public AuthAdapter init() {
return new AuthAdapter()
.loginUrl("/login") //设定登录地址,未登录时自动跳转
.addRule(r -> r.include("**").verifyIp().failure((c, t) -> c.output("你的IP不在白名单"))) //添加规则
.addRule(b -> b.exclude("/login**").exclude("/_**").verifyPath()) //添加规则
.processor(new AuthProcessorImpl()); //设定认证处理器
}
}
- 构建菜单数据
List<ResourceGroup> groupList = GritClient.global().auth().getUriGroupList(subjectId);
for (ResourceGroup group : groupList) {
ResourceEntity res = GritClient.global().auth().getUriFristByGroup(subjectId, group.resource_id);
if (Utils.isEmpty(res.link_uri) == false) {
//res...
}
}