shiro学习笔记(3)-登陆认证

Shiro身份验证抛出AuthenticationException异常,解决方案 问题 在学习Shiro的时候,遇到Shiro抛出org.apache.shiro.authc.AuthenticationException异常,完整异常如下: org.apache.shiro.authc.AuthenticationException: Authentication failed for token submission [org.apache.shiro.authc.Use... 阅读详情

  在shiro框架中,未登录就是未认证,登陆了才算认证,认证后只能使用一些基本权限,使用更多的权限需要授权,认证和授权是不同的概念。

 

一、UserAction中的相关代码

public String login(){
		
		//从Session中获取生成的验证码
		String validatecode = (String) ServletActionContext.getRequest().getSession().getAttribute("key");
		//校验验证码是否输入正确
		if(StringUtils.isNotBlank(checkcode) && checkcode.equals(validatecode)){
			System.out.println(user.getPassword()+user.getUsername());
			//输入的验证码正确
			//使用shiro框架提供的方式进行认证授权
			Subject subject = SecurityUtils.getSubject();//获得当前用户,状态为未认证
			AuthenticationToken token = new UsernamePasswordToken(user.getUsername(),user.getPassword());//创建用户名密码令牌对象
			try{
				subject.login(token);//调用login
			}catch(Exception e){
				this.addActionError("输入的账号或密码错误!");
				e.printStackTrace();
				return LOGIN;
			}
			//没有异常,验证正确,将查询到的user存入session
			//通过subject对象获得绑定在线程上的user
			User getUser = (User) subject.getPrincipal();
			ServletActionContext.getRequest().getSession().setAttribute("loginUser", getUser);
			return "home";
		}else{
			//输入的验证码错误,设置提示信息,跳转到登录页面
			this.addActionError("输入的验证码错误!");
			return LOGIN;
		}
	}

未认证时会调用这段登陆的代码,需要在这段代码中加入shiro框架,通过SecurityUtils调用当前用户,并且注册一个认证令牌

AuthenticationToken ,将用户输入的用户密码保存在令牌中,接着调用当前用户的login方法,传入令牌,接着程序通过applicationContext.xml中配置的realm

二、数据桥梁realm的代码:

public class BOSRealm extends AuthorizingRealm{
	@Autowired
	private UserDao userDao;
	
	/**
	 *认证方法
	 */
	protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
		System.out.println("认证方法已经执行");
		//根据用户名查询数据库中的密码,框架负责比对数据库中的密码和页面输入的密码是否一致
		UsernamePasswordToken tk = (UsernamePasswordToken) token;
		//获得用户名
		String username = tk.getUsername();
		//根据用户名查询数据库
		User user = userDao.findUserByUsername(username);
		if(user == null){
			//用户名不存在
			return null;
		}
		//简单认证信息对象
		AuthenticationInfo info = new SimpleAuthenticationInfo(user, user.getPassword(), this.getName());
		//框架负责比对数据库中的密码和页面输入的密码是否一致
		return info;
	}
	
	/**
	 * 授权方法
	 */
	protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection args){
		
		return null;
	}

}

如果账号不存在或者密码错误,都会报相应的错误,通过struts.xml定义全局异常捕捉就可以返回相应的页面或文字

Shiro认证流程和授权流程 认证:身份验证,即在应用中谁能证明他就是他本人。一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明。 在shiro中,用户需要提供principals (身份)和credentials(证明)给shiro,从而应用能验证用户身份: principals:身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可。一个主体可以有多个principals 阅读详情

相关推荐

基于shiro实现的用户登录系统

基于shiro实现的用户登录系统,运行sql文件更改数据库连接可直接运行,项目集成了mybatis-plus,shiro,springmvc,角色管理和组管理,非常简单实用,非常适合学习,不用输入验证码可以登录,admin密码123456

SpringBoot的shiro实现认证

SpringBoot的shiro实现认证

qq_43880100的博客 937

Shiro实现登录授权功能

Shiro实现登录授权功能

shiro登陆失败提示_shiro登录认证常见的异常解析

场景:使用shiro安全框架做用户登录认证是,在认证的过程中可能会抛出一系列的异常,这时候我们该如何准确的捕获所遇到的异常呢?首先我们得先认识什么是ShiroException、AuthenticationException:先看看异常之间的继承关系图: 用户登录/*** 用户登录** @param email 邮箱* @param password 密码* @return*/@Respon...

weixin_39916520的博客 1602

UE5 使用Slate制作对话窗口

使用Slate制作对话框窗口并获取对话框结果,非UMG

qq_25521145的博客 3190

Matplotlib图片尺寸调整全攻略:从figsize到savefig的实战技巧

在数据可视化与科学计算中,图形尺寸控制是影响图表可读性与专业度的基础环节。其核心原理在于协调逻辑尺寸(英寸)与物理输出(像素)的映射关系,这直接决定了信息呈现的清晰度与布局合理性。从技术价值看,精准的尺寸控制能提升图表在不同媒介(如学术论文、报告、网页)中的适配性,避免显示不全、模糊失真等常见问题。在应用场景上,无论是Jupyter Notebook中的交互探索、自动化报告的批量生成,还是满足严格出版要求的插图制作,都需要掌握对应的尺寸调整策略。本文聚焦于matplotlib中的figsize参数、rcPa

weixin_30899023的博客 331

shiro基本使用和完成登录

Apache Shiro 是 Java 的一个安全框架。目前,使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring Security,可能没有 Spring Security 做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的 Shiro 就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。

qq_48655035的博客 1408

AWR1642+DCA1000EVM 不使用mmWave Studio软件采集原始ADC数据 Timeout问题汇总

DCA1000 EVM Timeout问题汇总

Jesy_Hsu的博客 1476

shiro认证登录流程

1、获取从请求中传来的信息(一般是账号和密码),存进UsernamePasswordToken中 UsernamePasswordToken token = new UsernamePasswordToken(username, password) 2、从SecurityUtils中通过getSubject()方法获取登录的主体 Subject subject = SecurityUtils.getSubject(); 3、然后执行登录的逻辑 subject.login(token); 4、Deleg

lamwolf的博客 1万+

运放专题:运算放大电路中的相位补偿

的方法

五花带点肉 2万+

语义通信实战:跳过“比特”保“语义”,手把手构建轻量级图像压缩重建网络(基于PyTorch)

本文详细介绍了基于PyTorch的轻量级语义通信系统LICRnet的实现,专注于图像压缩重建中的语义信息保留。通过深度可分离卷积、可变窗口多尺度注意力等创新技术,显著降低计算量并提升性能,特别适用于无人机巡检、远程医疗等物联网场景。文章包含完整的代码实现、训练策略及部署优化方案。

weixin_27697385的博客 221

Shiro框架:SSM整合Shiro进行登陆认证和授权详细配置

本篇博客将进行详细介绍Shiro+Spring+SpringMVC+Mybatis+数据库整合并进行登陆认证和授权详细配置。 SSM的整合可以参考:https://blog.youkuaiyun.com/a745233700/article/details/81049763 下面主要介绍Shiro与SSM的整合和使用: 1、导入Shiro需要的maven依赖: <!-- shiro --&......

张维鹏的博客 9132

保姆级教程:用PROGRAM_FTDI搞定Xilinx FPGA的JTAG调试器(基于FT232/FT2232/FT4232)

本文详细介绍了如何使用FT232/FT2232/FT4232系列芯片通过PROGRAM_FTDI工具配置Xilinx FPGA的JTAG调试器。从芯片选型、驱动安装到固件烧写和Vivado验证,提供了完整的实操指南和避坑要点,帮助开发者低成本实现高效调试。

weixin_29271053的博客 2174

springboot整合shiro实现用户登陆认证、用户授权等

简介: Apache Shiro 是Java的一个安全框架, 可以帮助我们完成:认证、授权、加密、会话管理、与 Web 集成、缓存等。 目前,使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring Security,可能没有 Spring Security 做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的 Shiro 就足够了。 摘自w3cschool:https://www.w3cschool.cn/shiro/co4m1if2.html 项目简

龙池小生 4万+

多源异构数据在线可视化ETL编排平台深度实践:基于Python与Apache Calcite的现代数据管道构建

在当今企业数据环境中,数据源呈现爆发式增长与高度异构性。传统ETL工具面对多源(MySQL、PostgreSQL、MongoDB、Hive、文件系统等)与异构(结构化、半结构化、非结构化)数据时,往往面临扩展性差、学习曲线陡峭、难以融入现代DevOps体系等问题。本文深入探讨了如何构建一个基于Python/Pandas、Apache Calcite(通过JPype桥接)以及Vue.js前端的轻量级、在线可视化ETL编排平台。

2201_76125261的博客 79

OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南——OpenClaw的赚钱底层逻辑与“记忆”革命

AI 的商业价值不在于替代思考,而在于沉淀关系。当 Agent 记住你的偏好、你的历史、你的目标,它就不再是冷冰冰的软件,而是成为数字化的关系资产。这种资产的稀缺性不在于技术复杂度,而在于时间无法被压缩——你无法用更好的算法替代 3 个月的协作记忆。在这场“记忆革命”中,护城河不是模型参数,而是用户与 AI 共同书写的历史。OpenClaw 用一套优雅的文件系统架构,将这种历史转化为可积累、可复用、可变现的数字资产。从“计算即服务”(CaaS)到“记忆即服务”(MaaS)。

冯·诺依曼 1347

从头开始——SSM+Shiro实现登陆认证

Shiro功能概述:  Shiro是一个功能强大且灵活的开源安全框架,可以清晰地处理身份验证,授权,企业会话管理和加密。 身份验证:有时也称为“登录”,这是证明用户是他们所说的人的行为。 授权:访问控制的过程,即确定“谁”可以访问“什么”。 会话管理:即使在非Web或EJB应用程序中,也可以管理特定于用户的会话。 加密:使用加密算法保持数据安全,同时仍然易于使...

MaNongXf的博客 2935

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Shiro+JWT实现用户登陆认证,权限控制

shiro用来认证用户及权限控制,jwt用来生成一个token,暂存用户信息。为什么不使用session而使用jwt?传统情况下是只有一个服务器,用户登陆后将一些信息以session的形式存储服务器上,然后将sessionid存储在本地cookie中,当用户下次请求时将会将sessionid传递给服务器,用于确认身份。但如果是分布式的情况下会出现问题,在服务器集群中,需要一个sess...

我的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ajax shiro认证,shiro实现简单登陆认证

在实现shiro简单登陆认证后出现问题,不使用ajax请求登陆,当点击登陆访问一个controller方法,securityUils.getSubject.login(token)访问提交后找不到地址,登陆时候不需要在对密码进行加密操作了吧?//这是controller@RequestMapping("/checkLogin.do")private void login(HttpServletRe...

weixin_33042659的博客 265

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Shiro实现登录认证以及整合到Springboot3

Shiro实现登录认证以及整合到Springboot3

LIPAH的博客 3242

Shiro实现登陆认证、授权

文章目录一、Shiro简历及组成二、Shiro过滤器&标签三、Shiro环境搭建1.添加shiro依赖2.配置web.xml3.创建自定义realm类:AuthRealm,继承AuthorizingRealm4.配置applicationContext-shiro.xml, Spring整合shiro四、Shiro登陆认证(一)认证实现1.修改LoginController,通过shiro实现登陆认证2.编写AuthRealm,实现登陆认证五、Shiro登陆认证(二)自定义凭证匹配器实现认证自定义凭

bingxuebojue的博客 1475

Shiro学习笔记之(四)Apache Shiro 认证(登陆)

Shiro学习笔记之(三)Apache Shiro SecurityMananger配置一、概述认证就是验证用户身份的过程,这里一般是提交用户身份信息(Principals)和凭证信息(Credentials)。Principals是Subject唯一标识属性,用来证明Subject,可以理解为身份证号码。Credentials,通俗理解密码,但是不局限于密码,指纹,视网膜,证书都可以。二、认证过...

David 437

Shiro权限认证

Shiro权限认证 一、框架搭建 各种依赖见SSM+Shiro搭建笔记 二、登陆认证 1、最简单的用户名+密码登陆 首先需要一个login.jsp页面用来登陆 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c...

BestRiven的博客 242

Shiro框架——shiro的认证

通过分析源码可得:自定义Realm的作用:放弃使用.ini文件,使用数据库查询上边的程序使用的是Shiro自带的IniRealm,IniRealm从ini配置文件中读取用户的信息,大部分情况下需要从系统的数据库中读取用户信息,所以需要自定义realm。1.shiro提供的Realm2.根据认证源码认证使用的是SimpleAccountRealmSimpleAccountRealm的部分源码中有两个方法一个是认证一个是授权//.......省略= null) {

2301_79438104的博客 2326

shiro的实现认证

1,基本概念 1,身份验证 即在应用中谁能证明他就是他本人。一般提供如他们的身份ID 一些标识信息来 表明他就是他本人,如提供身份证,用户名/密码来证明。 在 shiro 中,用户需要提供principals (身份)和credentials(证明)给shiro,从而应用能 验证用户身份: 2,principals 【/'pr?ns?pl】 身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可。 一个主体可以有多个principals,但只有一个Primar

京北游戏官方 8849

SpringBoot + Shiro实现登陆认证(实现过程 + 源码解析 + 代码展示)

文章目录1.概述1.1 SpringBoot1.2 Shiro新的改变 1.概述 1.1 SpringBoot 今天要做的是使用SpringBoot配合Shiro来实现登陆的认证,所以SpringBoot是必不可少的,相信大家能用到Shiro了,SpringBoot一定不差,那就不做过多赘述,我们主要来介绍Shiro。 1.2 Shiro 新的改变 ...

LinJy 7310
上一篇: shiro学习笔记(2)-添加maven依赖以及与spring的整合
下一篇: shiro框架学习笔记(4)---使用shiro注解开发和授权
BoringRong
BoringRong 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 2万+粉丝 386原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

BoringRong

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

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

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

打赏作者

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

抵扣说明:

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

余额充值