erp-重难点-权限管理-3

shiro自定义realm完成认证,实现对动态资源访问控制

权限管理6大步

菜单可见和不可见:
1、不同角色看不同菜单的,表设计思路
2、不同角色看不同菜单的,表修改思路
资源可访问和不可访问:
3、shiro,登录后才能访问特定资源
4、shiro,登录后不同角色可以访问不同资源
5、shiro,登录后不同角色可以访问同一个资源里面的不同方法
6、shiro,登录后不同角色可以访问同一个资源同一个方法的不同部分
##回顾
前面主要介绍不同角色针对管理系统菜单查看的权限(菜单可见和不可见),以及修改权限。

这节,主要介绍不同角色针对管理系统资源访问的权限(资源可访问和不可访问)。资源分静态资源和动态资源。静态资源指css、js、html等。动态资源指某一个servlet、action、Controller。

出现的问题

前面我们可以控制某些菜单对某些角色不可见,但是没有控制直接访问资源的情况,甚至无需登录就可以直接访问系统资源。比如:

在这里插入图片描述

当然,我们可以在任何操作之前,要求用户先登录,但有些繁琐。用shiro可以很容易控制。

需求

只有登录,才能访问所有的动态资源。直接访问动态资源,应该提示登录。
效果图
在这里插入图片描述

实现步骤

1. 配置pom.xml

在这里插入图片描述

2. 配置web.xml

在这里插入图片描述

注意需要添加到structs过滤器之前。

3. 配置applicationContext_shiro.xml

在这里插入图片描述

4. 编写认证核心代码,没有自定realms。

这个username、pwd是否正确。shiro现在是无法知道的。所以需要配置realms,不然会出现如下错误:

在这里插入图片描述

5. 自定realms

在这里插入图片描述

完善applicationContext_shiro.xml配置

在这里插入图片描述

6. 断点看执行流程

前端点登陆按钮,来到控制层

在这里插入图片描述

然后到自定义Realm里面去

在这里插入图片描述

回到控制层,通知前端,登陆成功

在这里插入图片描述

shiro面试常见问题

1. shiro可以做什么?

​ 认证、授权、会话管理、加密。

在这里插入图片描述

2. 怎么理解shiro认证和授权?

认证:拿到登机牌,能上飞机。
授权:坐头等舱还是普通舱。

3. shiro的内置过滤器能记住几个?

过滤器类型过滤器对应的类描述
anon认证AnonymousFilter随意访问
authc认证FormAuthenticationFilter认证后访问
authcBasic认证BasicHttpAuthenticationFilter
perms授权PermissionsAuthorizationFilter指定角色
port授权PortFilter指定端口
rest授权HttpMethodPermissionFilter指定方法
roles授权RolesAuthorizationFilter指定角色
ssl授权SslFilterhttps
user授权UserFilter

4. 项目中用过哪些过滤器?

anon: /admins/=anon 没有参数,表示可以匿名使用
authc: /admins/user/
=authc 没有参数,表示登录后访问
perms: /admins/user/*=perms[“权限名称”],参数可以写多个,多个之间用逗号,不同角色访问

5. 怎么理解shiroUrl的匹配规则的第一符合原则?

会先后覆盖,实际存储结构是map

6. Shiro的三大核心组件:

在这里插入图片描述

Subject:正与系统进行交互的人,或某一个第三方服务。所有Subject实例都被绑定到(且这是必须的)一个SecurityManager上。
SecurityManager:Shiro架构的心脏,典型的Facade模式。用来协调内部各安全组件,管理内部组件实例,并通过它来提供安全管理的各种服务。当Shiro与一个Subject进行交互时,实质上是幕后的SecurityManager处理所有繁重的Subject安全操作。
Realms:本质上是一个特定安全的DAO。当配置Shiro时,必须指定至少一个Realm用来进行身份验证和/或授权。Shiro提供了多种可用的Realms来获取安全相关的数据。如关系数据库(JDBC),INI及属性文件等。可以定义自己Realm实现来代表自定义的数据源。

7. shiro认证的流程

(1)创建token令牌,token中有用户提交的认证信息即账号和密码
(2)执行subject.login(token),最终由securityManager通过Authenticator进行认证
(3)Authenticator的实现ModularRealmAuthenticator调用realm从数据库中取用户真实的账号和密码
(4)CustomRealm先根据token中的账号去数据库中找该账号,如果找不到则给ModularRealmAuthenticator返回null,如果找到则匹配密码,匹配密码成功则认证通过。

其他链接

Shiro系列教程URL匹配规则(AntPathMatcher)
请教一下关于过滤器,拦截器,监听器具体应用上的区别?
shiro权限认证与授权

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值