Shiro的权限控制

本文主要探讨了Shiro框架在权限控制方面的应用,包括在方法上添加注解以实现细粒度控制,启用注解以简化配置,以及重写认证过程以定制化的身份验证策略。通过对这些关键步骤的详细讲解,帮助读者深入理解Shiro如何实现强大的权限管理体系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法上添加注解

	/**
	* RequiresPermissions:权限的拦截,对应用户的权限列表。logical是各
	* 个权限的关系,or是满足一个就行,and是都得满足
	* RequiresRoles:角色的拦截,对应用户的角色
	**/
 	@GetMapping("/role")
    @RequiresPermissions(value={"user:update","user:*"},logical= Logical.OR)
    @RequiresRoles("user")
    public String testRole(){

        return "获取权限";
    }

启用注解

 /**
     * 开启注解
     * @param securityManager
     * @return
     */
    @Bean
    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager){
        AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
        authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);

        return authorizationAttributeSourceAdvisor;
    }

重写认证

public class MyShiroRealm extends AuthorizingRealm {
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        // 能进入到这里,表示账号已经通过验证了
        String username = (String) principalCollection.getPrimaryPrincipal();

        //先把所拥有的角色给获取  这里应该请求后台或是从缓存获取
        Set<String> roleString = new HashSet<>();
        roleString.add("admin");

		//获取权限   真实环境应该从后台或是缓存获取
        Set<String> perms = new HashSet<>();
        perms.add("user:update");

        // 授权对象
        SimpleAuthorizationInfo s = new SimpleAuthorizationInfo();
        // 把通过DAO获取到的角色和权限放进去
        s.setStringPermissions(perms);
        s.setRoles(roleString);
        return s;

    }

   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值