快速上手

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文件夹下。

至此,业务应用接入操作完成。


MatrixAuth——高性能轻量级分布式权限系统