zoukankan      html  css  js  c++  java
  • 关于shiro权限管理的一些总结

      项目中最近开发用到了shiro,你看了可能会解决刚接触这块知识不清楚如何下手 。shiro作为一款轻量级的权限管理框架,在项目中主要想管理用户的登陆之后的页面访问,按钮,数据的显示。主要借用了shiro自己的页面权限标签。

    当用户登录时-》先经过自己的一些过滤器 ,首先拦截登陆url在controller层  :  

    spring-shiro.xml配置如下:

    下面是对应的登陆验证入口:

      

    /**
         * 登录页
         */
        @RequestMapping("/login")
        public String login() {
         String msg="login";
         Subject subject = SecurityUtils.getSubject();
         if (subject.isAuthenticated()) {
          msg="redirect:/welcome";
         }
            return msg;
        }

    ------------

    逻辑介绍:subject.isAuthenticated() 判断用户是否通过验证  isAuthenticated() 获得用户信息封装成token 经过继承 AuthorizingRealm 实现两个方法 为当前登录的Subject授予角色和权限doGetAuthorizationInfo()

    验证当前登录的Subject(doGetAuthenticationInfo)

      经过 doGetAuthenticationInfo 方法 查询数据库判断token 成功或失败,成功则进入下一个过滤器  继承 FormAuthenticationFilter  我这里主要实现了 executeLogin() onLoginSuccess()  onLoginFailure()doCaptchaValidate() 四个方法 

        (1)onLoginSuccess()方法则是验证通过 则执行  msg="redirect:/welcome"; 跳转到欢迎界面,

        (2)onLoginFailure()方法则是验证不通过 执行  msg="login"; 跳转到登陆页面。

        (3) executeLogin() doCaptchaValidate()这两个方法是页面验证码如果用户信息验证三次失败之后,进入验证码验证。防止恶意攻击。

      接下来则是用户信息验证通过之后进入doGetAuthorizationInfo()方法进行用户角色权限的缓存,缓存用户页面权限标签。决定用户在页面看到的内容。

    至于其他的关于shiro与spring的配置文件大同小异。具体的项目需要具体设置。总的来说shiro对于用户权限的管理还是挺不错的,上手较快。

  • 相关阅读:
    hdu4578 (多标记线段树)
    hdu4757 (可持久化字典树+LCA)
    CF940F Machine Learning (带修改莫队)
    csps模拟测试7576一句话题解
    csps模拟测试74梦境,玩具,飘雪圣域题解
    csps模拟测试7273简单的操作小P的2048小P的单调数列小P的生成树
    csps模拟测试707172部分题解myc
    莫队算法学习
    csps模拟69chess,array,70木板,打扫卫生题解
    csps模拟68d,e,f题解
  • 原文地址:https://www.cnblogs.com/baimh/p/6928292.html
Copyright © 2011-2022 走看看