2-Shiro框架-大致流程

QEMU pcie config空间访问机制 而pci_host_conf/data_le_ops的定义是在hw/pci/pci-host.c里,对于0xCF8端口的处理,因为是地址选通,所以只需要在write的时候记录、read的时候返回记录的值即可。而pci_host_config_write/read_common接口,在前256Bconfig空间的模拟中,也同样是会调用这个接口,所以后续的处理都是一样的。这是真实的硬件设计,而对于QEMU+KVM的虚机场景,显然是要基于硬件实现和虚拟化的需求设计虚机访问config空间的完整流程。 阅读详情
1. 可以看到web.xml中配置了过滤器过滤了所有的请求,Shiro把这些请求分为不拦截的请求和拦截的请求。
  1. 不拦截的请求可以是经过认证的请求,也可以是在spring中配置的过滤器类中的filterChainDefinitions属性规定的可以匿名访问的或者没有在该属性中规定的请求。
  2. 该属性规定的需要认证的请求会被拦截,然后重定向到配置好的登录页面。
  3. 注意:web.xml配置的过滤器是spring包里的,它会在spring容器中找和此过滤器名称对应的bean,所以bean的id要和过滤器名称一致。(当然,如果非要用不一样的名字,也可以配置一个targetBeanName属性)。
  4. 配置过滤请求的时候
    • 问好匹配单个字符、一个星号匹配0个和多个字符串、两个星号匹配多重路径
    • 前面的配置会覆盖后面的配置
2. 登录认证(将表单页面提交到实现认证的Controller中(注意在Shiro的过滤器bean中放行这个Controller))

1). 获取当前的Subject。调用SecurityUtils.getSubject();
2). 测试当前的用户是否已经被认证。调用Subject的IsAuthenticated();方法
3). 若没有被认证,则把从表单得到的用户名和密码封装为UsernamePasswordToken对象
4). 执行登录,调用Subject的Login(AuthenticationToken)方法。
5). 自定义Realm类(这个Realm类是要作为一个Bean配置在Spring中的),从数据库中获取对应的记录,返回给Shiro,继承org.apache.shiro.realm.AuthenticatingRealm类(这应该是个抽象类),实现doGetAuthenticationInfo(AuthenticationToken);方法

实现该Realm方法的步骤:
  1. 将AuthenticationToken强转为UsernamePasswordToken
  2. 从UsernamePasswordToken中获取到username。使用getUsername方法
  3. 查询数据库,得到用户名对应的信息
  4. 根据用户信息抛一些异常,例如UnknownAccountException异常,LockedAccountException异常
  5. 根据用户情况构建AuthenticationInfo(这应该也是个抽象类)对象返回,常用的实现类为:SimpleAuthenticationInfo,有三个参数principal:认证的实体信息,credentials:数据库中的密码,realmName:当前realm对象的name,调用父类的getName方法即可。
3. 密码加密

密码比对:通过AuthenticatingRealm的credentialsMatcher属性来进行密码比对。也就是自己实现的Realm继承的类的属性。
1. 如何把一个字符串加密为MD5?
使用Shiro带的类,SimpleHash,传入参数之后构造出该类,该类的toString方法即可得到加密后的字符串。

        //TODO 注意这里的参数要和配置文件中Realm的属性设置的一样否则得不到正确密码
        //加密类型
        String algorithmName = "MD5";
        //加密数据
        Object source = "密码";
        //盐
        Object salt = ByteSource.Util.bytes("一个唯一的固定的随机字符串");
        //加密次数
        int hashIterations = 1810;
        SimpleHash simpleHash = new SimpleHash(algorithmName, source, salt, hashIterations);
  1. 替换当前的Realm的credentialsMatcher属性为HashedCredentialsMatcher对象,并设置属性加密算法
    • 还记得在spring的配置文件中配置了我们自定义的Realm类吗,在那个配置里设置它的属性值
    • 设置credentialsMatcher属性为shiro里面提供的HashedCredentialsMatcher类。
    • 然后给HashedCredentialsMatcher类的hashAlgorithmName(应该是加密类型)设置值为MD5,hashIterations(加密次数)为1810
    <bean id="jdbcRealm" class="com.xxx.ShiroRealm">
        <property name="credentialsMatcher">
            <bean class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
                <property name="hashAlgorithmName" value="MD5"/>
                <property name="hashIterations" value="1810"/>
            </bean>
        </property>
    </bean>
华为OD机试 - 第k个排列 - 全排列递归(Python/JS/C/C++ 2025 C卷 100分) 给定参数n,从1到n会有n个整数:1,2,3,…,n,这n个数字共有n!按大小顺序升序列出所有排列的情况,并一一标记当n=3时,所有排列如下“123”,“132,“213”,“231”,“312”,“321”输入两行,第一行为n,第二行为k,给定n的范围是[1,9],给定k的范围是[1,n!排列为“12”和“21”,第2个是“21”。给定n和k,返回第k个排列。输出排在第k位置的数字。只有一个排列,直接返回。 阅读详情

相关推荐

八股已死、场景当立(Docker篇)

本文总结了Docker相关的面试八股文,重点介绍了Docker在Java开发中的应用。主要内容包括:Docker容器与虚拟机的区别及其对Java应用性能的影响;如何为Java应用构建优化镜像;Docker常用命令在Java容器管理中的使用;Docker网络模式与数据卷在Java微服务中的配置;使用Docker Compose部署Java+MySQL微服务的方法;以及为Java应用配置健康检查的重要性。文章还通过具体示例说明了Nginx容器挂载、日志收集等常见场景的实现方式,为Java开发者提供了实用的Doc

qq_55253420的博客 713

关于Shiro框架权限标识符中*使用的总结

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34007291的博客 439

用VSCode搭建Vue.js开发环境及Vue.js第一个应用

用VSCode搭建Vue.js开发环境及Vue.js第一个应用

m0_61961937的博客 1万+

shiro 过滤器定义

各默认过滤器常用如下(注意URL Pattern里用到的是两颗星,这样才能实现任意层次的全匹配) /admins/**=anon             无参,表示可匿名使用,可以理解为匿名用户或游客 /admins/user/**=authc   ...

liang2009go的博客 263

Unity UI Toolkit避坑指南:从官方Samples到实际项目,这些‘坑’我帮你踩过了

本文分享了Unity UI Toolkit在实际项目中的避坑经验和优化技巧,包括动画系统的高效替代方案、3D世界UI的创新实现方式、USS样式继承的反直觉规则等。通过详细的代码示例和性能优化策略,帮助开发者避免常见陷阱,提升开发效率。

weixin_29535577的博客 342

如何利用东南大学齿轮箱数据集进行故障诊断?从数据采集到模型训练全流程解析

本文详细解析如何利用东南大学齿轮箱数据集进行故障诊断,涵盖从数据采集到模型训练的全流程。通过信号预处理、特征工程构建及多种机器学习模型对比,帮助开发者高效实现工业设备健康管理。特别适合希望将AI技术应用于工业场景的Python开发者。

m2n3b4v5c6的博客 375

MiraiQQ机器人框架部署教程

快速搭建一个属于自己的QQ机器人

m0_71931083的博客 3034

Windows如何使用Anaconda 3进行keras环境的配置

** Windows如何使用Anaconda 3进行keras环境的配置 搭建Keras环境* Anaconda3如何安装keras,主要包括下面三步: 1.安装mingw libpython 2.安装theano 3.安装keras 若你还没有按装anaconda,赶紧下载安装吧! 下载途径有两个 (1)Anaconda版本为Anaconda 4.4.0,对应的python版本为3.6,附上An...

Lance_liangliang的博客 1599

随心玩玩(三)Mirai框架QQ机器人

自己搭个塔骰,跑团的时候我投出来全是大成功岂不是美滋滋?(雾) 文章目录1. 什么是Mirai框架2. 下载mirai-console插件3. 创建项目4. Hello Mirai 1. 什么是Mirai框架 mirai 是一个在全平台下运行,提供 QQ Android 协议支持的高效率机器人库. 这个项目的名字来源于: 京都动画作品《境界的彼方》的栗山未来(Kuriyama mirai) CRYPTON以初音未来为代表的创作与活动(Magical mirai) 图标以及形象由画师DazeCake绘制

qq_19841133的博客 6367

【Unity-UGUI控件全面解析】| Layout自动布局组件详解

UGUI中有个自动布局组件Auto Layout,主要包含下面几个模块(点击可进入官方文档下查看描述): 自动布局 布局元素 (Layout Element) 水平布局组 (Horizontal Layout Group) 垂直布局组 (Vertical Layout Group) 网格布局组 (Grid Layout Group) 内容大小适配器 (Content Size Fitter) 自动布局系统 基于布局元素和布局控制器的概念。一个布局元素是具有矩形变换以及其他可选组件的游戏对象。布局元素对自身

努力前行,总会成为自己心中的那道光 2万+

SY6982C 7.4V锂电池1A充电模块原理图设计,已量产

在手持设备、便携工具与小型无人机等场景中,7.4V(2S)锂聚合物电池的应用愈发广泛。这类电池对充电系统的安全性、效率与兼容性提出了明确要求:需支持 USB 5V 输入、1A 安全充电,同时具备多重保护机制。本文将结合一款基于 SY6982C 的充电原理图,深入解析其电路设计与技术亮点。

不脱发的程序猿 359

【免费下载】 探秘Mirai:一个高效、强大的Java版QQ机器人框架

探秘Mirai:一个高效、强大的Java版QQ机器人框架 【免费下载链接】mirai mamoe/mirai: 是基于 C++ 的 OCR 库,可以用于识别图片中的文字,支持多种识别模式,包括车牌识别,人脸识别等。 项目地址: https://gitcode.co...

gitblog_00077的博客 1564

PCIE的MSI中断处理机制与优化策略

PCIe设备的。

xiaoheshang_123的博客 513

shiro框架学习2--登录登出流程

shiro框架学习记录,不对之处还请各位不吝赐教 登录登出流程的分析通过打断点在subject.login(token)代码上 源码的追踪就是自己在debug模式下一步一步执行下去,这里就不列出详细过程 整个过程用一张图概括 ...

weixin_42404323的博客 450

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

shiro oauth2 调用逻辑

本文也是拿来主义,拿别人的代码跑了一遍,算是自己的理解吧 主要两块: auth-client  客户端(第三方应用) auth-web(内部依赖auth-server) 服务提供方(这里资源和认证放在一起了,一般认证是独立的) auth-client的shiro配置 <beans xmlns="http://www.springframework.org/schema/bean

泽佑兄弟 ZYbros 2340

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Shiro框架漏洞攻略(CVE-2016-4437)

 Shiro  rememberMe反序列化漏洞(Shiro-550)

2301_78554096的博客 756

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

OAuth2-Shiro:安全框架新星,轻松保护你的Web应用

OAuth2-Shiro:安全框架新星,轻松保护你的Web应用 OAuth2-Shiro是一个集成OAuth2授权和Apache Shiro权限管理的轻量级安全框架,它将流行的认证协议与强大的权限控制库相结合,为Java开发者提供了一种简洁而高效的方式来保护他们的Web应用程序。 项目简介 OAuth2-Shiro的目标是简化开发过程中的身份验证和授权流程。在传统的Web应用开发中,实现这些功能需...

gitblog_00004的博客 474

Java权限控制框架看它就够了之Shiro

Java权限控制框架看它就够了共分为三个部分: 1、Java权限控制框架看它就够了之Shiro 2、Java权限控制框架看它就够了之Spring Security 3、Java权限控制框架看它就够了之Spring Security Oauth2 这三个权限框架博客将于近期发布,敬请关注哦!!!!!!!!!!!!!!!!!!!!!!!!!!!! 一、Shiro简介 首先我还是先介绍一波Shiro是做什么的吧。Shiro框架是Apache基金会开源维护的一个Java安全框架。它为...

雲浩的博客 1643

Shiro框架和JWT

目录shiro简介1.认证2.授权3.shiro靠什么做认证与授权JWT简介创建JWTUtil工具类令牌封装成对象AuthenticationToken类AuthorizingRealm类刷新令牌的新机制 创建存储令牌的媒介类创建过滤器创建ShiroConfigshiro是java非常有名的认证与授权的框架,使用JavaEE中JAAS功能。设计简单,SpringSecurity必须使用spring项目中。核验用户身份,认证登录,登录后Shiro要记录用户成功登录的凭证比再认证更加精细度的划分用户的行为。比如

市民景先生 3151

java域用户权限设置_SpringBoot2 整合 Shiro 框架,实现用户权限管理

一、Shiro简介1、基础概念Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。作为一款安全框架Shiro的设计相当巧妙。Shiro的应用不依赖任何容器,它不仅可以在JavaEE下使用,还可以应用在JavaSE环境中。2、核心角色1)Subject:认证主体代表当前系统的使用者,就是用户,在Shiro的认证中,认证主体通常就是userName和pass...

weixin_32424555的博客 282

shiro+oauth2.0

1.搭建Oauth2.0协议的实现demo,最好要先学习一下Shiro的环境搭建。 在Shiro安全控制框架的基础上实现oauth2.0 较为容易。 学习Oauth2.0 正式开始: 学习理论:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 案例 我用的是:张开涛的oauth和shiro集成的栗子。 当然理...

weixin_33911824的博客 1339

Shiro笔记三:SpringBoot2.x整合Shiro

Shiro笔记三:SpringBoot2.x整合Shiro springBoot2.x整合shiro 引入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency&g

公子&小白的博客 433

十七章 OAuth2集成——《跟我学Shiro》

目前很多开放平台如新浪微博开放平台都在使用提供开放API接口供开发者使用,随之带来了第三方应用要到开放平台进行授权的问题,OAuth就是干这个的,OAuth2是OAuth协议的下一个版本,相比OAuth1,OAuth2整个授权流程更简单安全了,但不兼容OAuth1,具体可以到OAuth2官网http://oauth.net/2/查看,OAuth2协议规范可以参考http://tools....

weixin_30267785的博客 100

Shiro框架:Shiro用户登录认证流程源码解析

​Shiro作为一款比较流行的登录认证、访问控制安全框架,被广泛应用在程序员社区;Shiro登录认证、访问控制、Session管理等流程内部都是委托给SecurityManager安全管理器来完成的,SecurityManager安全管理器上篇文章已经进行了详细解析,详见:Shiro框架:Shiro SecurityManager安全管理器解析-优快云博客,在此基础上,本篇文章继续对Shiro关联链路处理流程之一---登录认证流程进行解析;

博客园 2781

Shiro框架

本文主要介绍了Shiro框架的概念与使用,包括权限管理、Shiro框架简介、Shiro的配置、认证业务、认证后获得用户信息、登出、Handler方法与权限等内容。供个人学习使用。

专注Java和MySQL领域知识分享 1506

权限认证框架---Shiro

带你从0到1开始学习安全认证框架,采用图文结合和案例分析的模式,实操体验认证全流程

qq_60067835的博客 2396
上一篇: MyBatis输入映射
下一篇: 3-Shiro框架-多Realm认证
Suzuki Mirai
博客等级 码龄9年 17粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值