前言
shiro的组件都是javabean/pojo式的组件,所以非常容易使用spring进行组件管理,可以非常方便的从ini配置迁移到spring进行管理,且支持javase应用及web应用的集成。
集成 spring 后我们通过过滤器链来配置每个 url 需要的权限,但当配置多了以后就会不方便,而且只支持 url 级别的配置。
好在 shiro 提供了相应的注解用于权限控制,此处使用了 spring mvc 来测试shiro注解,当然 shiro 注解不仅仅可以在 web 环境使用,在独立的javase 中也是可以用的,此处只是以 web 为例了。
下面话不多说了,来一起看看详细的介绍吧
开启注解配置
首先我们需要在 spring web 的配置文件 spring-web.xml 中加入以下内容来开启 shiro 的注解支持 :
| 
 
								1
 
								2
 
								3
 
								4
						  | 
<aop:config proxy-target-class="true"/>
<bean class="org.apache.shiro.spring.security.interceptor.authorizationattributesourceadvisor">
<property name="securitymanager" ref="securitymanager"/>
</bean>
 | 
简单演示
接着我们就可以使用注解来配置权限:
| 
 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
 
								7
 
								8
 
								9
 
								10
 
								11
 
								12
 
								13
 
								14
 
								15
						  | 
@restcontroller
public class authorizationcontroller {
@requestmapping("/role1")
@requiresroles("user")
public string role1() {
return "success";
}
@requestmapping("/role2")
@requiresroles("admin")
public string role2() {
return "success2";
}
}
 | 
访问 role1 方法需要当前用户有 user 角色,role2 方法需要 admin 角色。
当验证失败时,会抛出 unauthorizedexception ,我们可以使用 spring 的 exceptionhandler 来进行异常处理:
| 
 
								1
 
								2
 
								3
 
								4
						  | 
@exceptionhandler(unauthorizedexception.class)
public string processunauthorizedexception(unauthorizedexception e) {
return e.getmessage();
}
 | 
更多注解
当然不止有 @requiresroles 用来验证角色,shiro 还提供了以下注解:
@requiresauthentication
	验证用户是否登陆,等同于方法 subject.isauthenticated() 。
@requiresuser
	验证用户是否被 记忆,即登陆成功或 rememberme 状态。等同于方法 : subject.isauthenticated() 与 subject.isremembered() 。
@requiresguest
仅未登录状态可访问,与 @requiresuser 完全相反。
@requirespermissions
验证是否具备权限,可通过参数 logical 来配置验证策略:
| 
 
								1
 
								2
 
								3
 
								4
						  | 
// 拥有 admin 或 user 角色即可
@requirespermissions(logical = logical.or,value = {"admin", "user"})
// 需同时具备 admin 与 user 角色
@requirespermissions(logical = logical.and,value = {"admin", "user"})
 | 
requiresroles 同样可以配置验证策略。
小结
我们可以通过注解配置来更方便的实现权限配置,且这些方法不仅可以配置在 controller 层,还可以在 service 层,dao 层等,只不过需要通过 ioc 容器来获取对象才能使用。
本章代码地址 : https://github.com/zhaojun1998/premission-study/tree/master/permission-shiro-10/
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对快网idc的支持。
原文链接:http://www.zhaojun.im/shiro-10/
相关文章
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
 - 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
 - 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
 - ASP.NET自助建站系统中的用户注册和登录功能定制方法 2025-06-10
 - ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
 
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
 - 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
 - 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
 - 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
 - 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
 
快网idc优惠网
QQ交流群
- 
            2025-06-04 94
 - 
            2025-05-27 65
 - 
            2025-05-27 22
 - 
            2025-05-29 74
 - 
            2025-05-27 72
 
        
    		
            	
        
        