配置AOP 式方法级权限检查

配置 Shiro Filter

配置 Shiro Filter

filterChainDefinitions 属性:设置 Shiro Filter 拦截的 URL 及访问该 URL 所需要的权限信息。

格式:URL_Ant_Path_Expression = Path_Specific_Filter_Chain。

等号左边是一个与 Web 应用程序上下文根目录相关的Ant 风格的路径表达式。

等号右边是逗号隔开的过滤器列表,用来执行匹配该路径的请求

Ant 风格资源地址支持 3 种匹配符:

?:匹配文件名中的一个字符

*:匹配文件名中的任意字符

匹配多层路径

路径表达式

URL 权限采取第一次匹配优先的方式

比如:

/account/** = ssl, authc

/account/signup = anon

如果传入的请求访问是 /account/signup/index.html,则会匹配 ssl, authc 权限,而 annon 将永不会被匹配!因为/account/** 匹配 短路 了其余的权限定义

权限信息

1、权限是用逗号隔开的过滤器列表,用来执行对该路径请求的匹配。

2、必须符合以下格式:filter1[optional_config1], filter2[optional_config2],…

filterN:一个 shiro 中的过滤器的别名

[optional_configN] :可选的权限字符串。若该过滤器对该 URL 路径不需要特定的配置,可以忽略括号,于是 filteN[] 就变成了filterN.

shiro中默认的过滤器

authc 和 user

1、user 和 authc :当应用开启了rememberMe 时,用户下次访问时是一个 user,但不是 authc,因为authc是需要重新认证的

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

2、user 表示用户不一定已通过认证,只要被 Shiro 记住过登录状态的用户就可以正常发起请求,比如rememberMe

3、简言之:以前的一个用户登录时开启了rememberMe,然后他关闭浏览器,下次再访问时他就是一个user,而不是authc

Remembered 和 Authenticated

Remembered(记住我):

一个 记住我 的 Subject 不是匿名的,是有一个已知的身份ID(也就是subject.getPrincipals()是非空的)。即:这个被记住的身份 ID 是在之前的session 中被认证的。

如果 subject.isRemembered() 返回 true,则 Subject 被认为是被记住的。

Authenticated(已认证)

一个已认证的 Subject 是指在当前 Session 中被成功地验证过:login方法被调用并且没有抛出异常

如果 subject.isAuthenticated()返回 true 则认为 Subject 已通过验证。

注意:Remembered 和Authenticated 是互斥的——若其中一个为真则另一个为假,反之亦然

filterChainDefinitions 案例

/admin=authc,roles[admin]:表示用户必需已通过认证,并拥有 admin 角色

/edit=authc,perms[admin:edit]:表示用户必需已通过认证,并拥有 admin:edit 权限

/home=user:表示用户不一定需要已经通过认证,只需要曾经被Shiro记住过登录状态

基于注解的授权

Shiro提供的注解

@RequiresAuthentication :要求当前 Subject 已经在当前的session 中被验证通过才能被注解的类/实例/方法访问或调用。

@RequiresGuest :要求当前的 Subject 是一个 “guest”,也就是他们必须是在之前的 session 中没有被验证或记住才能被注解的类/实例/方法访问或调用。

@RequiresPermissions:要求当前的 Subject 被允许一个或多个权限,以便执行注解的方法,比如:@RequiresPermissions(“account:create”)

@RequiresRoles:要求当前的 Subject 拥有所有指定的角色。如果他们没有,则该方法将不会被执行,而且 AuthorizationException 异常将会被抛出。比如:@RequiresRoles(“administrator”)

@RequiresUser:需要当前的Subject 是一个应用程序用户才能被注解的类/实例/方法访问或调用。要么是通过验证被确认,或者在之前session 中的 ‘RememberMe‘ 服务被记住。

基于标签库的授权:guest

guest 标签将显示它包含的内容,仅当当前的Subject 被认为是 guest 时。

guest 是指没有身份 ID 的任何 Subject:没有登录也没有在上一次的访问中被记住(RememberMe 服务)

guest 标签与user 标签逻辑相反。

例子:

shiro(三)shiro实战,常见java面试题和答案相关推荐

  1. 2021年面试,整理全网初、中、高级常见Java面试题附答案

    此为部分面试题包含答案,更多面试题见微信小程序 "Java精选面试题",3000+道面试题.内容持续更新中包含基础.集合.并发.JVM.Spring.Spring MVC.Spri ...

  2. 2020最新常见Java面试题及答案汇总

    一.Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java ...

  3. 「面试必备」常见Java面试题大综合 马云见了都点赞

    一.Java基础 1.Arrays.sort实现原理和Collections.sort实现原理 答:Collections.sort方法底层会调用Arrays.sort方法,底层实现都是TimeSor ...

  4. Java面试题以及答案精选(架构师面试题)

    整理中....未整理完 大家好,本人面试基本 "笔试死".问"基础死"."Java常识死"那一类型的....面试的过程中也从曾经被" ...

  5. 23道易忽略的java面试题及答案解析

    23道易忽略的java面试题及答案解析 转载:https://mp.weixin.qq.com/s/aL1xHKDfpojVVUOsdbvPzQ 1.你认为项目中最重要的过程是那些? 分析.设计阶段 ...

  6. java面试题2019 答案

    Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别(String 类型和 StringBuffer 类型的主要性能区别其实在于 Stri ...

  7. Java面试题及答案整理( 2022年最新版,持续更新)

    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全~ 这套互联网 Java 工程师面试题包括了:MyBatis.ZK.Dubbo.EL.Redis.MySQL. ...

  8. Java面试题及答案整理 140道( 2021年持续更新)

    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本人发现网上虽然有不少Java相关的面试题,但第一未必全,第二未必有答案,第三虽然有答 ...

  9. java面试题大全答案版文库_java高级面试题带答案

    java高级面试题,java面试题大全带答案,线程面试题,java面试宝典2019 1.[请对以下在J2EE中常用的名词进行解释(或简单描述)](http://www.wityx.com/post/1 ...

  10. 100 道常见 Hadoop 面试题及答案解析

    100 道常见 Hadoop 面试题及答案解析 目录 1 单选题 ................................................................... ...

最新文章

  1. 微信人人商城云服务器,微信支付 · 微智人人商城使用文档 · 看云
  2. C语言32位数加一精简,一个简单的32位多任务操作系统的实现(1)
  3. 最佳实践系列丨Docker EE 服务发现参考架构(二)
  4. boost::multiprecision模块complex128相关的测试程序
  5. [ZZ]强签名的由来和作用
  6. JSONModel的基本使用
  7. 十二、泛型、反射和异常
  8. 【原创】modb 功能设计之“支持多消费者单生产者”
  9. PHP-表单提交(form)
  10. 服务器电源的电源管理芯片,TI推出新款IC PMBus 管理及保护服务器电源
  11. 解决方案 | 为什么要配置mysql环境变量以及如何配置
  12. excel检验是否是正态分布-T分布
  13. URL在线编码/解码工具
  14. 【数理统计】显著性检验
  15. Visual Studio 2019 VSIX插件
  16. 遥感图像预处理-几何校正
  17. 小说更新太慢怎么办_写网络小说写得太慢怎么办?
  18. FlappyBird游戏介绍
  19. android+双卡imei,以编程方式在Android中为双SIM卡检索IMEI号码
  20. 蓝牙智能窗帘(天猫精灵生态)方案

热门文章

  1. 小型超市网上购物系统开发项目总结
  2. 基于java的薪资工资管理系统
  3. HRM人力资源管理软件选型最重要的三点
  4. Codeforces-1684 D: Traps 【贪心、排序】
  5. 捷联惯导系统模型及仿真
  6. 用戶故事 vs 用例
  7. 如何编写用户故事的验收标准
  8. 计算机英语词汇的特点,计算机专业英语词汇特点.ppt
  9. java环境变量配置和android sdk环境变量配置
  10. 禁忌搜索算法求解 TSP 问题的代码示例