Shiro自定義登錄驗證

shiro源码分析(六)CredentialsMatcher 的案例分析 NULL 博文链接:https://lgbolgger.iteye.com/blog/2170522 立即下载

shiro自帶了一套登錄驗證的邏輯,下面以SimpleCredentialsMatcher的實現爲例

    /**
     * This implementation acquires the {@code token}'s credentials
     * (via {@link #getCredentials(AuthenticationToken) getCredentials(token)})
     * and then the {@code account}'s credentials
     * (via {@link #getCredentials(org.apache.shiro.authc.AuthenticationInfo) getCredentials(account)}) and then passes both of
     * them to the {@link #equals(Object,Object) equals(tokenCredentials, accountCredentials)} method for equality
     * comparison.
     *
     * @param token the {@code AuthenticationToken} submitted during the authentication attempt.
     * @param info  the {@code AuthenticationInfo} stored in the system matching the token principal.
     * @return {@code true} if the provided token credentials are equal to the stored account credentials,
     *         {@code false} otherwise
     */
    public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
        /*
        token 和 info 可以理解爲user類,
        token 是用戶登錄是輸入信息,
        info  則是shiro從數據庫查到的用戶信息
        */
        
        Object tokenCredentials = getCredentials(token);//getCredentials實際就是獲取密碼
        Object accountCredentials = getCredentials(info);
        return equals(tokenCredentials, accountCredentials);//直接返回對比結果
    }



/**
     * Returns the {@link #getPassword() password} char array.
     *
     * @return the {@link #getPassword() password} char array.
     * @see org.apache.shiro.authc.AuthenticationToken#getCredentials()
     */
    public Object getCredentials() {
        return getPassword();
    }

shiro的登陸驗證就是依靠SimpleCredentialsMatcher.doCredentialsMatch這個方法的返回來判斷是否登錄成功,所以只需要繼承SimpleCredentialsMatcher然後重寫doCredentialsMatch就可以自定義自己想要的登錄校驗了。

ps:記得在AuthorizingRealm設置剛剛自定義的CredentialsMatcher

告别盲打:为NXOpen Python API生成智能代码提示的完整指南 本文提供了一份为NXOpen Python API生成智能代码提示的完整指南。通过配置匹配的Python环境、利用类型存根文件生成工具创建.pyi文件,并在PyCharm或VSCode中正确配置,开发者可以彻底告别“盲打”,获得精准的代码补全和参数提示,从而大幅提升NX二次开发的效率和体验。 阅读详情

相关推荐

计算机网络之NAT的解释与实验配置

NAT 静态NAT 动态NAT easy_ip NAT服务器映射

爱学习的JackYang的博客 1919

SimpleCredentialsMatcher和HashedCredentialsMatcher的区别

如果不知道shiro的认证过程,可以先看这篇文章:https://blog.youkuaiyun.com/ITWANGBOIT/article/details/102500492 1:它们都是CredentialsMatcher的实现类,而且HashedCredentialsMatcher还是SimpleCredentialsMatcher的子类 2:SimpleCredentialsMatcher进...

ITWANGBOIT的博客 2590

告别Qt Creator?手把手教你用VSCode+MinGW调试QT项目(附完整launch.json配置)

本文详细介绍了如何在VSCode中配置完整的QT开发环境,特别是针对使用MinGW编译器的用户。从环境搭建到调试配置,包括生成.pro文件、Makefile,以及配置task.json和launch.json文件,帮助开发者高效调试QT项目。

weixin_27180827的博客 187

Spring Shiro基础组件 CredentialsMatcher

Spring Shiro基础组件 CredentialsMatcher 简介。

我家有猫已长成的博客 1398

MobaXterm破解14个会话限制的保姆级教程(附Python环境配置指南)

本文提供了MobaXterm破解14个会话限制的详细教程,并深入讲解了如何配置稳定的Python环境以支持相关脚本运行。通过理解软件授权机制、安全实践步骤以及许可文件的应用,帮助用户解除会话数量限制,实现高效的远程服务器管理与自动化运维。

weixin_29211309的博客 1669

出个AI8051U的PWM例程 | 3相互补SPWM变频驱动,PWMA-3个相位差120度的PWM互补输出

通道2输出: P2.2, PWMA2P输出, P2.3, PWMA2N输出, PWMA2相对PWMA1滞后120度相位.通道3输出: P2.4, PWMA3P输出, P2.5, PWMA3N输出, PWMA3相对PWMA1滞后240度相位.先别修改程序, 直接下载"Objects"里的"pwm.hex"测试, 下载时选择主频24MHz.主频32.768MHz, PWM周期1422, 刷新频率23040Hz,死区0.5us,通道1输出: P2.0, PWMA1P输出, P2.1, PWMA1N输出。

USB_CAN_8051的博客 691

Shrio 自定义算法登录认证

1.实现shrio SimpleCredentialsMatcher的doCredentialsMatch算法 package cn.steven.manager.security; import cn.sh.ideal.manager.util.AESUtils; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationToken; import org.apache.sh

SuperstarSteven的博客 469

【AUTOSAR实战】:CAN发送邮箱忙导致报文发送丢帧的问题调试

本文档主要讨论了CAN总线通信中可能出现的TC377传输错误的分析和解决方案。文章提供了如何通过检查CAN传输和接收过程、识别传输缓冲区的类型和状态以及选择适当的内存保护功能来检测和解决此类错误的见解。经过多次尝试和分析,得出的结论是,修改CANIF缓冲的尺寸并重新分配报文给各个buffer并不能解决问题。此外,发送中断被抢占可能导致报文无法发送,最终也将此因素排除。本文档还提到了一些可能导致发送流程调度出现问题的因素,例如CANIF中报文引用Buffer不合理。

weixin_46481662的博客 3141

Apache Shiro使用自定义密码匹配器完成密码验证

我们在使用Apache Shiro的API登录时,会先创建一个令牌对象,而经常用的令牌对象是UsernamePasswordToken,通过用户输入的用户名、密码构建一个UsernamePasswordToken对象,然后调用Subject的login()方法登录。而Apache Shiro默认是通过其实现类SimpleCredentialsMatcher来进行输入的密码和数据库的密码的比较(简单的等值比较)。然后神奇的事发生了,当密码输入错误的时候,居然会登录失败,我们并没有写对比密码的代码。

沐雨橙风ιε的博客 867

高通拨号流程介绍

本文介绍了高通平台(如SDX55)中APSS(A7处理器)与ModEM(Q6处理器)间的通信机制。

四儿家的小祖宗的博客 1068

手把手教你学Simulink——基础储能管理场景实例:基于Simulink的压缩空气储能(CAES)系统简化模型仿真

本文介绍了基于Simulink的压缩空气储能(CAES)系统简化模型仿真方法。CAES作为大规模长时储能方案,相比锂电池具有成本低、寿命长等优势。文章详细讲解了AA-CAES系统组成、热力学建模理论,以及Simulink实现流程,包括储气室、压缩机、膨胀机等核心模块的建模方法。通过8小时充电(50MW)和6小时放电(40MW)的仿真,验证了系统可实现60%往返效率。该模型为理解CAES系统运行机制提供了实用工具,并指出热管理、储气室特性等工程实践要点,为新型电力系统储能规划提供了仿真基础。

MHD0815的博客 172

Shiro自定义realm实现密码验证及登录、密码加密注册、修改密码的验证

Shiro自定义realm实现密码验证及登录、密码加密注册、修改密码的验证 一:先从登录开始,直接看代码 @RequestMapping(value="dologin",method = {RequestMethod.GET, RequestMethod.POST},produces="text/html;charset=UTF-8") @ResponseB...

weixin_30905981的博客 1808

光学防抖OIS介绍与标定

前言:先看一下有无ois系统的效果。 1. OIS系统的作用就是消除镜头的抖动。 Gyro感受方向,Hall感受位移,Actuator驱动马达来矫正抖动方向和位移。 2.ois系统的结构构成 从上面来看ois系统主要有Hall,...

camerall 1万+

shiro实现手机验证码登录(涉及到:自定义token、多realm配置、自定义ModularRealmAuthenticator)

shiro框架提供了一个UsernamePasswordToken令牌,用来验证用户名和密码类的登录。那如果想要通过替他方式登录认证,例如通过手机验证码接口,就需要通过自定义token、自定义realm等来实现。 1、首先,自定义一个token继承UsernamePasswordToken,为什么要继承这个类而不是AuthenticationToken?,是因为这样做保证了用户名密码认证方式任然

MODjie的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Shiro登录机制验证,自定义FormAuthenticationFilter

自定义登录form拦截器:org.apache.shiro.web.filter.authc.FormAuthenticationFilter问题描述使用shiro进行系统身份验证-权限控制,登录界面进行登录操作何时触发boolean org.apache.shiro.web.filter.authc.AuthenticatingFilter.executeLogin(ServletRequest...

ygyblue2的博客 3571

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Shiro框架整合Spring-Boot开发的Web应用使用基于Shiro的自定义登录验证方式------Shiro框架

Shiro框架整合Spring-Boot开发的Web应用使用基于Shiro的自定义登录验证方式------Shiro框架

在经历了无数个黑夜之后,我决定自己成为太阳 1499

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jeecg-boot登录及接口验证(JWT+shiro)

shrio配置 package org.jeecg.config; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import javax.servlet.Filter; import org.apache.shiro.mgt.DefaultSessionStorageEvalu...

harcrance的博客 2万+

shiro-登录验证

从上可以看出,具体的登录账号和密码从request中取出来,并创建了token对象,调用subject的login方法,login方法实现大致流程是用token去realm中取AuthenticationInfo对象,AuthenticationInfo对象存放的是正确的登录账号和密码,并和token中数据进行匹配,然后根据匹配情况返回相应的结果。shiro实现登录验证,可以用它自身的方法来实现,也可以自定义方法来实现登录验证,了解了shiro的登录逻辑,实现自定义的验证逻辑就很简单。

segegefe的博客 1583

SSM框架下shiro的验证码登录

所谓的验证码登录也就是 验证码正确之后利用shiro的免密登录啦 验证码的验证:发送短信的时候,把验证码信息放到缓存里(key为sessionid),表单提交过来的时候,从缓存里拿出来比较就好。 接下来就是shiro 的免密登录: 1、思路 自定义token,在进行授权时判断是密码登陆或无密码登陆,自定义密码认证方法,即写一个方法继承HashedCredentialsMatcher,...

gzc_870301的博客 738

Shiro框架使用使用自定义的登陆验证方法解决出现无法验证成功报错的BUG------Shiro框架

Shiro框架使用使用自定义的登陆验证方法解决出现无法验证成功报错的BUG------Shiro框架

在经历了无数个黑夜之后,我决定自己成为太阳 1548

菜鸟学习shiro之实现自定义的Realm,从而实现登录验证,身份验证和权限验证4

讲了那么多使用的内置的类从而实现四郎,现在讲自定义的境界 首先行家的依赖依然是第一篇的那个依赖 下边是自定义的境界: import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.Au...

保持愤怒 890
上一篇: mybatis3.4.6~.3.0.6 區別
j_java66
博客等级 码龄9年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值