关于shiro权限管理的一些总结

时间:2024-09-19 14:33:44

  项目中最近开发用到了shiro,shiro作为一款轻量级的权限管理框架,在项目中主要想管理用户的登陆之后的页面访问,按钮,数据的显示。主要借用了shiro自己的页面权限标签。

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

  /**
     * 登录页
     */
    @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对于用户权限的管理还是挺不错的,上手较快。