SpringBoot使用tools-auth进行权限验证-阿里云开发者社区

开发者社区> Java技术进阶> 正文
登录阅读全文

SpringBoot使用tools-auth进行权限验证

简介: SpringBoot项目快速使用权限框架

简单快速的在项目中进行权限验证

一、导入依赖

<dependency>
    <groupId>cn.gjing</groupId>
    <artifactId>tools-auth</artifactId>
    <version>1.0.1</version>
</dependency>

二、权限注解

该注解使用在API上,用于对用户请求方法时进行身份认证

1、@RequiredPermissions

权限认证,请求的用户需要存在该注解中设置的权限,否则抛出PermissionAuthorizationException

参数 描述
value 需要的权限

2、@RequiredRoles

角色认证,请求的用户需要存在该注解中设置的角色,否则抛出RoleAuthorizationException

参数 描述
value 需要的角色

三、token生成器

主要用来生成Token和解析Token,使用时可以通过@Resource注解进行依赖注入

public class TestController {
    @Resource
    private TokenAssistant tokenAssistant;
    
    @GetMapping("/token")
    public void getToken() {
        Map<String, Object> map = new HashMap<>(16);
        map.put("user", "张三");
        String token = this.tokenAssistant.createToken(map);
        System.out.println("生成的token:" + map);
        System.out.println("解析token:" + this.tokenAssistant.parseToken(token));
    }
}

四、启动类增加注解

在项目启动类增加@EnableAuthorization注解用于开启项目权限校验

五、设置权限认证监听器

通过监听器可以对用户拥有的权限进行提供以及进行自己的认证校验

/**
 * @author Gjing
 **/
@Component
public class MyListener implements AuthorizationListener {
    /**
     * 增加用户的访问权限用于对增加了权限注解的方法进行身份认证,如果返回null会抛出NoAccountException
     * 这里模拟权限数据,给当前请求的用户增加admin角色和add权限。实际使用时
     * 用户权限你可以保存在任何地方
     *
     * @param token 用户Token
     * @return AuthorizationMetaData
     */
    @Override
    public AuthorizationMetaData supplyAccess(String token) {
        SimpleAuthorizationMetaData metaData = new SimpleAuthorizationMetaData();
        metaData.addRole("admin");
        metaData.addPermission("add");
        return metaData;
    }

    /**
     * 权限注解验证通过后会触发该方法,你可以在这里做一些项目中自己的权限认证逻辑
     *
     * @param token 用户Token
     */
    @Override
    public void authentication(String token) {

    }

    /**
     * 验证全部通过后且方法执行完毕
     *
     * @param request HttpServletRequest
     * @param method  请求的方法
     */
    @Override
    public void authenticationSuccess(HttpServletRequest request, Method method) {
        System.out.println();
    }
}

六、额外配置

可以通过这些配置控制拦截路径和过滤路径,以及token存在的请求头名称等等...yml文件全部配置如下:

tools:
  auth:
    # 拦截的路径
    path: /**
    # 排除的路径
    filter: 
    # 生成token的加密方式
    type: hs256
    # token存放的请求头名称
    header: Authorization
    # 加密的盐
    salt: 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
Java技术进阶
使用钉钉扫一扫加入圈子
+ 订阅

Java技术进阶成长,课程资料,案例解析,实战经验全都有!

官网链接