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: 

目录
相关文章
|
4月前
|
前端开发 安全 Java
SpringBoot验证框架@Valid
SpringBoot验证框架@Valid
57 1
|
4月前
|
JSON 前端开发 Java
SpringBoot 的优雅的接口参数验证
1. 为什么需要参数验证 在应用程序的开发中,我们经常会遇到需要保证传入参数的正确性的情况。例如,当我们在注册用户时,需要验证用户填写的表单数据是否符合规范,是否缺少必填字段,或者格式是否正确,等等。如果不对参数进行验证,我们的应用程序可能会因此受到攻击或者运行出错。 为了保证参数的正确性,我们需要使用参数验证机制,来检测并处理传入的参数格式是否符合规范。 2. 如何进行参数验证 Spring Boot内置了一个很强大的参数验证框架——JSR 303 Bean Validation 标准,它可以对我们的实体类参数进行校验,并且可以给我们提供详细的错误提示信息。
111 1
|
29天前
|
SQL Java 数据库连接
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
这篇文章介绍了在Spring Boot + MyBatis + Shiro项目中,如何使用Shiro框架实现登录用户的权限验证,包括用户、角色和权限表的设计,以及通过多个表查询来收集和验证用户权限的方法和代码实现。
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
|
29天前
|
SQL 前端开发 Java
springboot项目中使用shiro实现用户登录以及权限的验证
这篇文章详细介绍了如何在Spring Boot项目中集成Apache Shiro框架来实现用户登录和权限验证,包括项目依赖配置、数据库连接、实体类定义、控制器、服务层、Mapper层以及前端页面的实现,并展示了实际效果和过滤器代码。
springboot项目中使用shiro实现用户登录以及权限的验证
|
28天前
|
安全 Java 关系型数据库
SpringBoot SpringSecurity 介绍(基于内存的验证)
SpringBoot SpringSecurity 介绍(基于内存的验证)
29 0
|
28天前
|
前端开发 Java
如何实现 Java SpringBoot 自动验证入参数据的有效性
如何实现 Java SpringBoot 自动验证入参数据的有效性
27 0
|
3月前
|
算法 Java API
在Spring Boot中实现接口签名验证通常涉及以下步骤
在Spring Boot中实现接口签名验证通常涉及以下步骤
172 4
|
2月前
|
Java 数据库连接 测试技术
在Spring Boot中实现数据校验与验证
在Spring Boot中实现数据校验与验证
|
4月前
|
前端开发 Java Spring
SpringBoot通过拦截器和JWT令牌实现登录验证
该文介绍了JWT工具类、匿名访问注解、JWT验证拦截器的实现以及拦截器注册。使用`java-jwt`库生成和验证JWT,JwtUtil类包含generateToken和verifyToken方法。自定义注解`@AllowAnon`允许接口匿名访问。JwtInterceptor在Spring MVC中拦截请求,检查JWT令牌有效性。InterceptorConfig配置拦截器,注册并设定拦截与排除规则。UserController示例展示了注册、登录(允许匿名)和需要验证的用户详情接口。
665 1
|
4月前
|
JSON Java 数据格式
springboot 签名验证
springboot 签名验证