首先建立一个自定义的验证类
package com.wsmail.shiroController;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authc.credential.SimpleCredentialsMatcher;
import org.apache.shiro.crypto.hash.Sha384Hash;
/**
* 自定义 密码验证类
* @author q
*
*/
public class CustomCredentialsMatcher extends SimpleCredentialsMatcher {
@Override
public boolean doCredentialsMatch(AuthenticationToken authcToken, AuthenticationInfo info) {
UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
Object tokenCredentials = encrypt(String.valueOf(token.getPassword()));
Object accountCredentials = getCredentials(info);
//将密码加密与系统加密后的密码校验,内容一致就返回true,不一致就返回false
return equals(tokenCredentials, accountCredentials);
}
//将传进来密码加密方法
private String encrypt(String data) {
String sha384Hex = new Sha384Hash(data).toBase64();//这里可以选择自己的密码验证方式 比如 md5或者sha256等
return sha384Hex;
}
}
然后在 ShiroDbRealm类里 加个
/**
* 设定Password校验.
*/
@PostConstruct
public void initCredentialsMatcher() {
//该句作用是重写shiro的密码验证,让shiro用我自己的验证
setCredentialsMatcher(new CustomCredentialsMatcher());
}
同时在新增用户的时候密码保存用 如下方式 以此进行验证和数据库里的密码的一致
...
psu.setPwd(new Sha384Hash(psu.getPwd()).toBase64());
...
save(psu);
分享到:
相关推荐
Spring Boot 集成 Shiro 自定义密码验证和 Freemarker 标签根据权限渲染不同页面 Shiro 是一个强大的权限管理框架,可以与 Spring Boot 集成,提供了一个灵活的权限管理系统。在这个示例中,我们将介绍如何将 Shiro...
本实例将通过自定义Realm来演示如何使用Shiro从数据库中查询数据进行用户验证。 首先,我们需要了解 Realm 的基本概念。在Shiro中, Realm 是一个接口,它实现了认证和授权的功能。默认的 Realm 类型包括 JdbcRealm...
SpringBoot Shiro 配置自定义密码加密器代码实例 在本篇文章中,我们将详细介绍如何在 SpringBoot 项目中配置自定义密码加密器代码实例,使用 Shiro 框架来实现身份认证和授权管理。Shiro 框架提供了一个灵活的安全...
在这个Demo中,Shiro的主要作用可能是实现用户登录时的密码加密和验证,以及后续访问资源时的权限控制。 **密码加密** 在用户注册或登录时,为了保证用户信息安全,通常会对密码进行加密存储。Shiro提供了多种密码...
- 密码验证成功后,用户的部分信息将被赋值到 Principal 对象,便于后续权限判断。 - 通过 `doGetAuthorizationInfo` 方法进行菜单授权。首先获取已验证的 `User`,然后使用 `UserUtils` 获取 `menuDao`,根据用户...
Apache Shiro是一个强大的Java安全框架,它为应用程序提供了身份验证(Authentication)、授权(Authorization)以及会话管理(Session Management)等功能。在这个项目中,我们将会深入理解如何利用Shiro来实现登录...
Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了身份验证、授权、密码管理和会话管理等功能,简化了在 Java 应用程序中处理安全性的问题。Shiro 的设计目标是使开发者能够专注于应用程序的安全逻辑,而...
在默认情况下,Shiro提供了一些预定义的Realm实现,如JDBCRealm、AuthorizingRealm等,但这些可能无法满足所有应用场景,因此我们需要自定义Realm来适配特定的数据存储结构和验证逻辑。 1. ** Realm的基本结构**:...
Apache Shiro是一个强大的Java安全框架,它提供了身份验证(Authentication)、授权(Authorization)以及会话管理(Session Management)等功能,简化了在Java应用中处理安全问题的过程。"shiro登录拦截校验demo"是...
2. **配置Shiro**:创建一个Shiro配置类,配置 Realm(认证和授权信息的来源),例如自定义UserRealm,实现AuthenticationInfo和AuthorizationInfo的获取方法。 3. **创建过滤器链**:Shiro通过Filter Chain定义了...
Shiro 提供了内置的身份验证机制,支持多种认证模式,如简单的密码匹配、基于 token 的认证等。在不自定义缓存的情况下,Shiro 会直接与后端数据存储(如数据库)进行交互,每次验证都需要查询用户信息。 2. **授权...
在实际使用中,你可能需要创建一个自定义的`Realm`来连接你的数据源,然后配置Shiro以使用这个`Realm`进行认证和授权。此外,还可以利用Shiro的Filter链进行URL级别的权限控制,确保只有拥有相应权限的用户才能访问...
当我们需要自定义权限验证时,通常会创建多个 Realm 类,每个类继承自 `AuthorizingRealm`。 权限验证流程: 当用户尝试访问受保护的资源时,Shiro 会按照在 Spring Boot 配置中定义 Realm Bean 的顺序进行权限验证...
它负责验证用户提供的凭证(如用户名和密码),并根据验证结果进行相应的操作,如登录成功后的跳转或登录失败的提示。`onLoginSuccess`方法则是在用户身份验证成功后调用的回调方法,通常用于执行登录成功后的逻辑,...
SpringBoot 整合Apache Shiro 是为了实现在Web应用程序中进行用户身份验证和授权的高效方式。Shiro 提供了一套简洁的API,用于处理登录、权限控制、会话管理和密码加密等安全需求。在本项目中,我们将一步步了解如何...
1. **认证**:验证用户身份的过程,即用户提交凭证(如用户名/密码)后,Shiro会进行一系列检查,确认用户身份。 2. **授权**:权限控制,判断登录后的用户是否有执行特定操作的权限。 3. **会话管理**:Shiro可以...
3. **Cryptography**:Shiro 提供了丰富的加密工具,包括密码哈希、消息摘要算法、对称和非对称加密等,确保数据的安全传输和存储。 4. **Session Management**:Shiro 可以独立于应用服务器进行会话管理,支持...
在 Shiro 中,你可以自定义 Realm 来连接你的数据源,并实现获取用户凭证(如用户名和密码)的方法。Shiro 提供了 `Subject.login()` 方法来执行登录操作,如果认证成功,Subject 将被绑定到当前线程。 3. **授权...
- **测试类**:可能包含 JUnit 测试用例,用于验证 Shiro 功能的正确性。 - **资源文件**:如用户、角色和权限的定义,可能存在于 XML 或数据库中。 - **pom.xml**:Maven 项目配置文件,列出了 Shiro 和其他依赖库...
3. 自定义登录控制器:创建一个用于处理用户登录的Controller,调用Shiro进行身份验证。 **五、整合FreeMarker与Shiro** 1. 在FreeMarker模板中使用Shiro标签库:在.ftl文件顶部引入Shiro标签库: ```html ...