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

  • 相关阅读:
    未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。
    SQLServer2008/2012 删除所有表视图存储过程
    u盘启动盘制作工具
    华硕笔记本怎么设置u盘启动(两种方法)
    java listener实现定时任务
    Highcharts简介
    重温css系列01
    webstom 如何获取github上面的项目工程
    js高程 第 4章 变量、作用域和内存问题 【笔记】
    ionic 安装教程
  • 原文地址:https://www.cnblogs.com/baimh/p/6928292.html
Copyright © 2011-2022 走看看