zoukankan      html  css  js  c++  java
  • Spring与Shiro整合 静态注解授权

    Spring与Shiro整合 静态注解授权

    作者 : Stanley 罗昊

    【转载请注明出处和署名,谢谢!】

    使用Shiro的种类

    首先,Shiro的授权方式共有三种;

    1.编程式授权(不推荐)

    2.注解式授权(普遍使用【力荐】)

    注:第一个始于基于角色控制权限,就是你这个用户拥有那些权限;

           第二个基于权限控制,判断你这个角色是否拥有这项权限,如果有给放行,如果没有被拦截;这个一般是判断数据库User表中会有一个权限列;

    3.Jsp式授权(一般前端UI有对应解决方案)

    注:jsp标签方式只是表面上不将此功能显示,但是如果有恶意用户绕过,直接输入ip地址+接口名称即可访问,所以必须配合后端一起使用;

    了解授权(注解方式)

    首先,我们在jsp页面上编写几个a标签:

     我们看到了分别有增、改、删,这也就对应我们后台控制器(Conteoller)中mapping内的Url拦截地址:

     我们现在开始将以上操作纳入Shiro管理;这一步,仅仅就是让这些Url纳入并被Shiro管理在Conteoller中声明;,

    将Url交给Shiro管理

    纳入很简单,只需要在这个接口上加上注解即可:

    注:第一个始于基于角色控制权限,就是你这个用户拥有那些权限;

           第二个基于权限控制,判断你这个角色是否拥有这项权限,如果有给放行,如果没有被拦截;这个一般是判断数据库User表中会有一个权限列【推荐】;

    所以我们会用第二种,直接在用户请求这个接口之前,判断这个注解中的表达式,如果你有save那你就进来,如果没有,你就被拦截;

    具体写法:

     解析:其中,employee可以写成Controller的前缀名称:

    Spring-Shiro.xml文件中配置

    编写完注解后,我们依然需要将配置文件中加入一段代码:

     1.开启Aop对类代理

    我们可以看察觉到,我们的注解是不是都贴在Controller类内的方法上,在这个方法中,我们不需要注入或引入任何接口,原因就是我们需要在xml文件中配置,也可以这样理解,我们把需要引入的Jar包以及继承的接口都放入xml文件中;

    2.开启Shiro注解支持

    我们这个注解,我们贴上去并让它起到作用(权限控制)的话,就需要再此配置,详细说就是,第三方程序的依赖,Spirng本身没有,所以我们需要依赖第三方程序从而实现权限的控制;

    注意:其中,上面的securityManager就是配置安全管理器的SecurityManager(同在Spring-Shiro.xml文件中):

     配置上后,当用户登陆时,就会在登陆的前置下,进入到授权环节中,这就是运用了AOP的思想;

    用户授权

    这个时候我们的UserRealm授权块中是没有分配任何权限的,也就是登入进来的这个用户,是没有任何权限的,所以程序运行后,当用户点击进入该页面时,时,是无法进入报错(500);

    当然,我们总不能出现权限不足的情况,就抛给用户报错信息,那自然是不对的,所以我们需要在Shiro.xml文件中再配置一句话,来表示,如果你权限不足,我会给你跳转到指定页面中去;

     这段话的意思时,当你因为权限而抛异常时,请允许我跳转至nopermission.jsp这个页面中去;

    分配权限(静态)

    其实,在讲静态之前,以下这个步骤,依然可以从数据库中获取,需要从数据库中User表中多出一个列,这个列就是权限列表;

    1.获取当前用户,就是获取当前登陆进来的这个用户

    获取当前用户,其实就是你认证模块中,你放入的User对象:

     首先,先获取当前用户,获取后,再从这个用户中获取他的权限,这个权限可以是数据库中你定义好的权限列表:

     

  • 相关阅读:
    delphi操作xml学习笔记 之一 入门必读
    Delphi中实现ListView滚动条的换肤方案
    关于CreateParams的参数
    Delphi中编写OwnerDraw方式按钮的方法以及注意点
    ClientDataSet使用心得和技巧
    ADO多线程
    SQL的单个表的大小限制最大可以是多大?
    TClientDataSet使用要点
    鼠标拖动窗体
    Delphi托盘类 收集
  • 原文地址:https://www.cnblogs.com/StanleyBlogs/p/11978947.html
Copyright © 2011-2022 走看看