AOP实现RBAC的角色访问权限验证

导读:本篇文章讲解 AOP实现RBAC的角色访问权限验证,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、引入aop依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

二、编写一个工具类TokenUtil

1、通过用户生成token

2、通过token验证用户是否登录

3、通过token获取用户实体类

public class TokenUtil {
    /**
     * 创建一个map  用于存储所有的令牌
     *
     *      token  -  User
     */
    private static Map<String, User> tokenMap = new HashMap<>();
    /**
     *  生成token,存储token-user的对应关系
     *  返回token令牌
     * @param user
     * @return
     */
    public static String generateToken(User user){
        // 生成唯一不重复的字符串
        String token = UUID.randomUUID().toString();
        tokenMap.put(token,user);
        return token;
    }
    /**
     *  验证token是否合法
     * @param token
     * @return
     */
    public static boolean verify(String token){
        return tokenMap.containsKey(token);
    }
    /**
     *  根据token获取用户信息
     * @param token
     * @return
     */
     public static User getUser(String token){
         return tokenMap.get(token);
     }
    public static void main(String[] args) {
        for (int i=0; i<20; i++){
            System.out.println(UUID.randomUUID().toString());
        }
    }
}

三、建立一个拦截业务逻辑类AuthInterceptor

public class AuthInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("AuthInterceptor preHandle....");
        String uri = request.getRequestURI();
        System.out.println("当前路径:"+uri);
        /**
         * HandlerMethod=>Controller中标注@RequestMapping的方法
         *  需要配置静态资源不拦截时,添加这块逻辑  => 前后端分离项目
         *
         */
        // 是我们的conrtoller中的方法
        if (!(handler instanceof HandlerMethod)) {
            return true;
        }
        String token = request.getHeader(GlobalConstant.HEADER_TOKEN);
        User user = TokenUtil.getUser(token);
        // 一定是登陆验证成功的
       if(!user.getMenuUrlList().contains(uri)){
           throw  new RuntimeException("403 Forbidden!");
       }
        return true;
    }
}

在WebMvcConfig中注入上面类并编写拦截规则

AOP实现RBAC的角色访问权限验证

如果用户有这个角色有这个访问权限才可以通行

四、数据库只需要用户id

 AOP实现RBAC的角色访问权限验证

通过后就会查到信息

AOP实现RBAC的角色访问权限验证

注:

项目代码的gitee地址https://gitee.com/hbuws/jwlb.git

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/115347.html

(0)

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!