⑥【Shiro】使多个自定义Realm规则生效。

news2024/11/24 20:38:32

在这里插入图片描述

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~

在这里插入图片描述

⑥【Shiro】Shiro中,如何使多个自定义Realm规则生效?



多个Realm实现原理

  • 当应用程序配置多个 Realm 时,例如:用户名密码校验、手机号验证码校验等等。Shiro 的 ModularRealmAuthenticator 会使用内部的 AuthenticationStrategy 组件判断认证是成功还是失败。
  • AuthenticationStrategy 是一个无状态的组件,它在身份验证尝试中被询问 4 次(这4 次交互所需的任何必要的状态将被作为方法参数):
    • (1)在所有 Realm 被调用之前
    • (2)在调用 Realm 的 getAuthenticationInfo 方法之前
    • (3)在调用 Realm 的 getAuthenticationInfo 方法之后
    • (4)在所有 Realm 被调用之后
  • 认证策略的另外一项工作就是聚合所有 Realm 的结果信息封装至一个AuthenticationInfo 实例中,并将此信息返回,以此作为 Subject 的身份信息

Shiro中的三种认证策略

  • AtLeastOneSuccessfulStrategy:只要有一个(或更多)的 Realm 验证成功,那么认证将视为成功
  • FirstSuccessfulStrategy:第一个 Realm 验证成功,整体认证将视为成功,且后续 Realm 将被忽略
  • AllSuccessfulStrategy:所有 Realm 成功,认证才视为成功

ModularRealmAuthenticator类 内置的认证策略默认实现是 AtLeastOneSuccessfulStrategy 方式 可以通过配置修改策略。



Shiro配置类,使多个Realm生效

/**
 * @author .29.
 * @create 2024-03-17 11:14
 */
@Configuration
public class ShiroConfig {
    @Autowired
    private MyRealm myRealm;

    //配置SecurityManager
    @Bean
    public DefaultWebSecurityManager defaultWebSecurityManager(){
        //1. 创建DefaultWebSecurityManager对象(安全管理器)
        DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
        //2. 创建认证对象
        ModularRealmAuthenticator modularRealmAuthenticator = new ModularRealmAuthenticator();
        //3. 设置认证策略为AllSuccessfulStrategy
        modularRealmAuthenticator.setAuthenticationStrategy(new AllSuccessfulStrategy());
        //4. 将设置了认证策略的认证对象存入安全管理器
        defaultWebSecurityManager.setAuthenticator(modularRealmAuthenticator);
        //5. 封装Realm集合,存入多个自定义Realm
        ArrayList<Realm> realms = new ArrayList<>();
        realms.add(myRealm1);
        realms.add(myRealm2);
        realms.add(myRealm3);
        //6.realm集合存入安全管理器
        defaultWebSecurityManager.setRealms(realms);
        //7.返回安全管理器
        return defaultWebSecurityManager; 
    }

}




在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1606391.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS的语法规则——基础选择器

元素&#xff1a; 用法&#xff1a; 标签名&#xff1a;{style的内容} 特点&#xff1a; 全局性&#xff0c;使用后&#xff0c;所有的相同标签都是同一种样式。 举例&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UT…

Docker使用教程及docker部署Vue项目

什么是Docker及其工作原理 虚拟化技术Docker是什么&#xff1f;三大基本术语核心算法原理和具体操作步骤 Docker和传统虚拟化技术区别为什么使用Docker&#xff1f;Docker有什么作用&#xff1f;1.解决应用部署的环境问题遇到问题达到效果 2.容器化 docker的各种命令解释运行机…

pnpm - Failed to resolve loader: cache-loader. You may need to install it.

起因 工作原因需要研究 vue-grid-layout 的源码&#xff0c;于是下载到本地。因为我习惯使用 pnpm&#xff0c;所以直接用 pnpm i 安装依赖&#xff0c;npm run serve 启动失败。折腾了一番没成功。 看到源码里有 yarn.lock&#xff0c;于是重新用 yarn install 安装依赖&…

hbase-2.2.7分布式搭建

一、下载上传解压 1.在官网或者云镜像网站下载jar包 华为云镜像站&#xff1a;Index of apache-local/hbase/2.2.7 2.上传到linux并解压 tar -zxvf hbase-2.2.7-bin.tar.gz -C /usr/locol/soft 二、配置环境变量 1. vim /etc/profile export HBASE_HOME/usr/local/soft/h…

基于大数据的手机销售数据分析可视化系统,爬取京东和淘宝的的手机商品数据进行分析,Flask,Python,数据可视化

介绍 该系统主要是通过爬取京东和淘宝的的手机商品数据进行分析。爬虫python脚本通过打开浏览器授权登录后按照搜索“手机”关键字后出现的商品列表进行爬取&#xff0c;获取标题名&#xff0c;解析付款人数&#xff0c;品牌&#xff0c;评论人数&#xff0c;发货地&#xff0…

Java相关的定时任务

就现在而言&#xff0c;关于定时任务有各种各样的架构&#xff1a;Java 定时器类【Timer】&#xff0c;Spring定时器类【Scheduled】&#xff0c;Quartz分布式定时器类&#xff0c;xxl-job分布式任务调度平台。xxl-job是一款轻量级定时任务可以分布式部署的调度平台。很多大的公…

AIDE:自动驾驶目标检测的自动数据引擎

AIDE&#xff1a;自动驾驶目标检测的自动数据引擎 摘要IntroductionRelated WorksMethodData FeederModel Updater4 Experiments 摘要 自动驾驶车辆&#xff08;AV&#xff09;系统依赖于健壮的感知模型作为安全保证的基石。然而&#xff0c;道路上遇到的物体表现出长尾分布&a…

SpringCloud系列(5)--SpringCloud微服务工程公共部分提取

前言&#xff1a;在上一章节中我们创建了两个个SpringCloud工程&#xff0c;但在两个工程中分别存在着一些重复的部分&#xff0c;例如重复的实体类&#xff08;如图所示&#xff09;&#xff0c;这样会造成系统的冗余&#xff0c;所以我们需要把公共的类提取到一个工程里&…

50.HarmonyOS鸿蒙系统 App(ArkUI)web组件实现简易浏览器

50.HarmonyOS鸿蒙系统 App(ArkUI)web组件实现简易浏览器 配置网络访问权限&#xff1a; 跳转任务&#xff1a; Button(转到).onClick(() > {try {// 点击按钮时&#xff0c;通过loadUrl&#xff0c;跳转到www.example1.comthis.webviewController.loadUrl(this.get_url);} …

docker 启动时报错

docker 启动时报如下错误 Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details 因为安装docker时添加了镜像源 解决方案&#xff1a; mv /etc/…

windows部署pgsql

1、下载&#xff1a;Download PostgreSQL Binaries 2、创建data目录作为数据目录 3、初始化 bin目录执行命令&#xff1a; .\initdb.exe -D E:\pgsql\data -E UTF-8 --localechs -U postgres -W 输入密码直到完成 4、启动数据库 .\pg_ctl.exe -D E:\pgsql\data -l logfil…

【CTF-Crypto】数论基础-01

数论基础 【专题说明】本系列文章主要根据B站Up主Alice-Bob学习数论基础知识&#xff0c;通过该系列文章&#xff0c;你可以对一些网安信安考试内容有一定了解&#xff0c;同时对于CTF中密码学方向的赛题在数论部分有更深的理解&#xff0c;如有不当之处&#xff0c;师傅们及时…

华为手机无法弹出wifi上网认证页面处理

华为手机无法弹出wifi上网认证页面 连wifi后跳到上图界面卡住&#xff0c;不跳转到单位的上网认证界面。 打开手机的设置应用&#xff0c;点击上面的WLAN选项。 点击上面的更多WLAN设置选项。 关闭WLAN安全检测就可以正常弹出上网认证界面&#xff0c; 正常弹出上网认证界面&a…

web安全学习笔记(12)

记一下第十六节课的内容。 一、jQuery Ajax 我们要先下载jQuery。 首先我们转移到template目录下&#xff0c;准备把jQuery下载到这下面。 直接wget下来就可以了。 这样我们就下载好了jQuery&#xff0c;下面我们学习如何使用。 jQuery 调用 ajax 方法 格式&#xff1a;$.…

量子时代加密安全与区块链应用的未来

量子时代加密安全与区块链应用的未来 现代密码学仍然是一门相对年轻的学科&#xff0c;但其历史却显示了一种重要的模式。大多数的发展都是基于几年甚至几十年前的研究。而这种缓慢的发展速度也是有原因的&#xff0c;就像药物和疫苗在进入市场之前需要经过多年的严格测试一样&…

高通滤波器(理解高通滤波器为什么会把无像素变化区域设置为0)

为什么所有的高通滤波器会把图像的背景色设置为0&#xff1f; 首先根据公式4.9-1&#xff0c;低通滤波器的定义&#xff0c;超过某个频率是百分之百通过的&#xff0c;为1.所以这里的含义是低于某个频率就会百分之百为0&#xff0c;完全不通过&#xff0c;那么可以肯定在H(0,0…

3ds Max2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 3ds Max是一款基于PC系统的强大3D建模、渲染和制作软件&#xff0c;广泛应用于游戏开发、影视后期制作、建筑设计、工业设计等多个领域。其拥有丰富的建模工具&#xff0c;可轻松创建逼真的三维场景和模型&#xff1b;同时&#…

基于SpringBoot的“论坛管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“论坛管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 论坛管理系统结构图 前台首页功能界面图 用户登录…

【GDAL-Python】4-在Python中使用GDAL进行投影转换、影像重采样以及裁剪栅格数据

文章目录 1-介绍1.1 主要内容1.2 EPSG 2-代码实现2.1 数据介绍2.2 代码实现2.3 结果及效果显示 3.参考资料 1-介绍 1.1 主要内容 &#xff08;1&#xff09;在本教程中&#xff0c;将介绍如何在 Python 中使用 gdalwarp 将栅格数据重新投影到不同的坐标参考系&#xff0c;影像…

hexo实现个人博客及涉及的技术学习

一、背景 最近,一直想做一个属于自己的网站.可以从零开始搭建一个网站,顺便可以把日常中学到的技术用于实战,还可以顺便记录自己的所思所感,记录成长的过程. 方案 一开始的方案是从零开始,模仿常见个人博客的设计,基于vueSpringbootMySQL的去实现网站. 新建项目之后,发现vu…