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: 

目录
相关文章
|
2月前
|
JSON 前端开发 Java
SpringBoot 的优雅的接口参数验证
1. 为什么需要参数验证 在应用程序的开发中,我们经常会遇到需要保证传入参数的正确性的情况。例如,当我们在注册用户时,需要验证用户填写的表单数据是否符合规范,是否缺少必填字段,或者格式是否正确,等等。如果不对参数进行验证,我们的应用程序可能会因此受到攻击或者运行出错。 为了保证参数的正确性,我们需要使用参数验证机制,来检测并处理传入的参数格式是否符合规范。 2. 如何进行参数验证 Spring Boot内置了一个很强大的参数验证框架——JSR 303 Bean Validation 标准,它可以对我们的实体类参数进行校验,并且可以给我们提供详细的错误提示信息。
50 1
|
7月前
|
JSON 前端开发 Java
SpringBoot 的优雅的接口参数验证
在应用程序的开发中,我们经常会遇到需要保证传入参数的正确性的情况。例如,当我们在注册用户时,需要验证用户填写的表单数据是否符合规范,是否缺少必填字段,或者格式是否正确,等等。如果不对参数进行验证,我们的应用程序可能会因此受到攻击或者运行出错。
|
8月前
|
Java
SpringBoot 整合JWT实现基于自定义注解的-登录请求验证拦截(保姆级教学,附:源码)2
SpringBoot 整合JWT实现基于自定义注解的-登录请求验证拦截
135 0
|
5月前
|
SQL Java 数据库
微服务技术系列教程(39)- SpringBoot -RBAC权限模型
微服务技术系列教程(39)- SpringBoot -RBAC权限模型
93 0
|
2月前
|
JSON Java 数据格式
springboot全局异常实现以及@Valid和@Validated优雅实现入参验证
springboot全局异常实现以及@Valid和@Validated优雅实现入参验证
66 0
|
4月前
|
JSON 安全 Java
Springboot最全权限集成Redis-前后端分离-springsecurity-jwt-Token5
Springboot最全权限集成Redis-前后端分离-springsecurity-jwt-Token5
|
4月前
|
NoSQL Java Redis
Springboot最全权限集成Redis-前后端分离-springsecurity-jwt-Token4
Springboot最全权限集成Redis-前后端分离-springsecurity-jwt-Token4
|
4月前
|
Java
Springboot最全权限集成Redis-前后端分离-springsecurity-jwt-Token4
Springboot最全权限集成Redis-前后端分离-springsecurity-jwt-Token4
|
4月前
|
Java
Springboot最全权限集成Redis-前后端分离-springsecurity-jwt-Token3
Springboot最全权限集成Redis-前后端分离-springsecurity-jwt-Token3
|
4月前
|
安全 Java 数据安全/隐私保护
Springboot最全权限集成Redis-前后端分离-springsecurity-jwt-Token2
Springboot最全权限集成Redis-前后端分离-springsecurity-jwt-Token2