SpringBoot 与Shiro 多realm实现多realm不同数据表用户登录认证和权限管理的方法,以及出现的错误

在本次编写学生宿舍管理系统时,在实现shiro对不同的表进行登录认证与权限管理的时候,出现错误。

首先,我们要知道的是shiro与spring整合配置两个realm时,两个realm返回了不同的AuthenticationInfo,但PrincipalCollection只包含一个principal。
这个时候,如果你依然使用单个realm的话,是无论无何也无法实现对两张表的操作的。

通过查看相关的源码 以及他人的经验,最终得以解决。
这里我推荐一篇博客SpringBoot 与Shiro 整合系列(四)多realm延伸之实现多realm不同数据表用户登录认证和鉴权
以及githubSpringBoot与Shiro整合实现: 1.用户认证与权限管理 2.MD5盐值加密 3.多Realm验证和鉴权

文章最后很重要的一点就是:
当配置了多个Realm时,我们通常使用的 认证器 是shiro自带的org.apache.shiro.authc.pam.ModularRealmAuthenticator,

  • 其中决定使用的Realm的是doAuthenticate()方法。
  • 自定义Authenticator
  • 注意,当需要分别定义处理 学生和系统管理员验证的Realm时,前端的登录页面的realm所选择的value的值,要对应Realm的全类名应该包含字符串“Admin”或者“Student”。
  • 并且,他们不能相互包含,例如 处理 系统管理员的Realm的全类名中不应该包含字符串“Student”

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三横同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值