spring集成shiro注解授权

来源:互联网 发布:it技术支持面试题 编辑:程序博客网 时间:2024/05/17 08:18

这种授权主要有3个配置:

1.springmvc.xml

  <!-- 开启aop,对类代理 -->
    <aop:config proxy-target-class="true"></aop:config>
    <!-- 开启shiro注解支持 -->
    <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
    <property name="securityManager" ref="securityManager"></property>
    </bean>

2.自定义realm中对于AuthorizationInfo方法的重写

 //授权方法  
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        Subject subject = SecurityUtils.getSubject();
User user = (User) subject.getPrincipal();

上面这两句是获取已登录的用户信息


        //根据身份信息获取权限信息
List<String> permissions = new ArrayList<String>();

这句是初始化一个将要返回给授权器的一个字符串集合
if(user.getPositionNo()==0)
{
permissions.add("0");
}else if(user.getPositionNo()>7)
{
permissions.add("0");
permissions.add("1");
permissions.add("2");
}else
{
permissions.add("1");
}

这个判断是我项目中的判断,你们根据自己要求改动


      //查到权限数据,返回授权信息
        SimpleAuthorizationInfo  simpleAuthorizationInfo = new SimpleAuthorizationInfo();
        simpleAuthorizationInfo.addStringPermissions(permissions);
        return simpleAuthorizationInfo;

把字符串集合返回给授权器,当项目中进行action访问的方法上有权限注解时,shiro就会在这个字符串集合中遍历查找有没有注解中的字符串,如果有就会执行action中的方法,如果没有就会报错 页面返回500错误页面


    }

3.action中添加注解

@RequestMapping("/a")
@ResponseBody
@RequiresPermissions("2")

public void geta(){

}

以上3步就可以简单使用shiro的授权机制了,至于没有权限时,返回的500页面 ,就需要自己配置了.

0 0
原创粉丝点击