spring集成shiro注解授权

这种授权主要有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页面 ,就需要自己配置了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值