Shiro集成Spring之注解示例详解

2025-05-29 0 15

前言

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/

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Shiro集成Spring之注解示例详解 https://www.kuaiidc.com/111089.html

相关文章

发表评论
暂无评论