GitHub项目中提供一个MatrixAuthDemo项目展示如何将业务应用接入MatrixAuth中,该项目github主页的demo
文件夹下。
我们以SpingBoot形式的业务应用为例进行介绍。
1 引入依赖包
业务应用需要通过MatrixAuthClient包来完成接入。以使用Maven的项目为例,在POM通过下面的代码引入最新的MatrixAuthClient包。
<dependency>
<groupId>com.github.yeecode.matrixauth</groupId>
<artifactId>MatrixAuthClient</artifactId>
<version>${last.version}</version>
</dependency>
2 增加配置信息
在业务应用的application.properties
文件中,进行下面信息的配置:
yeecode.matrixauth.applicationName
:必填,当前业务应用的应用名称,例如“app01
”。yeecode.matrixauth.serverUrl
:必填,MatrixAuth的工作地址和端口号,例如“http://127.0.0.1:12301
”。yeecode.matrixauth.applicationToken
:如未为业务应用设置appToken
则不填。该业务应用对应的appToken,要与在MatrixAuthServer中设置的一样(由系统管理员设置,详见“接口文档-系统管理员接口-应用设置接口”),否则不会通过校验。yeecode.matrixauth.datasource.driver
:必填,MatrixAuthClient所使用的数据库驱动,例如“com.mysql.jdbc.Driver
”。yeecode.matrixauth.datasource.url
:必填,当前业务应用的RBAC数据源(如果未使用独立的RBAC数据源则为MatrixAuth默认数据源)地址和配置信息,例如“jdbc:mysql://localhost:3306/ds01?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
”yeecode.matrixauth.datasource.userName
:必填,当前业务应用的RBAC数据源(如果未使用独立的RBAC数据源则为MatrixAuth默认数据源)的用户名。yeecode.matrixauth.datasource.password
:必填,当前业务应用的RBAC数据源(如果未使用独立的RBAC数据源则为MatrixAuth默认数据源)的密码。yeecode.matrixauth.cacheclient.url
:选填,如果该业务应用无缓存则不填。当前业务应用的缓存地址和端口,例如“127.0.0.1:6379
”。yeecode.matrixauth.cacheclient.password
:选填,如果该业务应用无缓存则不填。当前业务应用的缓存的密码,如果未设置密码,该项留空。
3 引入MatrixAuthClient的Bean
在项目中增加对MatrixAuthClient中Bean的扫描,如下所示:
@ComponentScan(basePackages = {"{业务应用的包地址}", "com.github.yeecode.matrixauth.client"})
4 使用切面激活MatrixAuthClient
创建一个切面设置类,使用如下的代码在业务应用的每个接口中引入MatrixAuthClient的判权操作。
@Aspect
@Component
public class AuthAop {
@Autowired
private MatrixAuthAop matrixAuthAop;
@Pointcut("execution(public * com.github.yeecode.matrixauth.demo.controller.*.*(..))")
public void inController() {
}
@Around("inController()")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
return matrixAuthAop.judgeAuth(joinPoint);
}
}
上述代码中com.github.yeecode.matrixauth.demo.controller.*.*(..))
表示业务应用需要被验权的切面,可以根据实际业务进行配置。
5 实现两个业务方法
创建一个配置方法,实现MatrixAuthSetup
接口。如下所示:
@Component
public class MatrixAuthConfiguration implements MatrixAuthSetup {
@Override
public String getCurrentUserKey() {
return "user01";
}
@Override
public Boolean handleLocalPerm(Method method, Object[] args, String[] permissionsInAnnotation, Set<String> permissionsUserOwned) {
return true;
}
}
在MatrixAuthSetup中存在两个方法:
getCurrentUserKey
:返回当前业务用户的userKey
,MatrixAuthClient需要根据该方法的返回值获取当前用户的唯一标识,并据此进行权限的获取、判断工作。通常来说,该值可以从用户的HTTP请求中获得。handleLocalPerm
:该方法用来完成@LocalPerm
注解中信息的处理。
业务应用引入MatrixAuthClient的任何问题均可参照MatrixAuthDemo项目解决,该项目在demo
文件夹下。
至此,业务应用接入操作完成。