`
zqb666kkk
  • 浏览: 732550 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

shiro自定义密码验证

阅读更多
首先建立一个自定义的验证类

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);

2
1
分享到:
评论
10 楼 amoyiki 2016-01-20  
博主你好我想请问一下我用shiro整合ssh时想用密文(使用MD5加密)验证是老是报错。错误内容:
Struts Problem Report

Struts has detected an unhandled exception:

Messages:
Authentication failed for token submission [org.apache.shiro.authc.UsernamePasswordToken - kh, rememberMe=false]. Possible unexpected error? (Typical or expected login exceptions should extend from AuthenticationException).

File: org/amoyiki/dao/UserDao.java(就是不能用hql去查询数据库里已经加密过的密码)

Stacktraces

org.apache.shiro.authc.AuthenticationException: Authentication failed for token submission [org.apache.shiro.authc.UsernamePasswordToken - kh, rememberMe=false]. Possible unexpected error? (Typical or expected login exceptions should extend from AuthenticationException).



其他配置文件应该都是没错的。
9 楼 zqb666kkk 2016-01-08  
viking58 写道
博主你好,shiro的login需要明文密码,有没有方法使用加密过的密码登录,或者不需要密码登录?

可以啊
8 楼 viking58 2015-12-25  
博主你好,shiro的login需要明文密码,有没有方法使用加密过的密码登录,或者不需要密码登录?
7 楼 java-lxm 2015-12-17  
Authentication failed for token submission [cn.dreampie.shiro.CaptchaUsernamePasswordToken - admin1, rememberMe=false ()]. Possible unexpected error? (Typical or expected login exceptions should extend from AuthenticationException).


会报错
6 楼 zxjlwt 2015-11-19  
学习了。
http://surenpi.com
5 楼 jacking124 2014-06-16  
zqb666kkk 写道
jacking124 写道
zqb666kkk 写道
jacking124 写道
shiro的密码不可以为空吧!


可以啊

我这里为空直接报空指针了!

你代码怎么写的 肯定是你没处理好 空指针啊  如果你空的话相当于不做密码验证了 你直接跳过那个验证就行了

这种特殊情况就不能走加密验证

哦哦,明白!
4 楼 zqb666kkk 2014-06-16  
jacking124 写道
zqb666kkk 写道
jacking124 写道
shiro的密码不可以为空吧!


可以啊

我这里为空直接报空指针了!

你代码怎么写的 肯定是你没处理好 空指针啊  如果你空的话相当于不做密码验证了 你直接跳过那个验证就行了

这种特殊情况就不能走加密验证
3 楼 jacking124 2014-06-13  
zqb666kkk 写道
jacking124 写道
shiro的密码不可以为空吧!


可以啊

我这里为空直接报空指针了!
2 楼 zqb666kkk 2014-06-13  
jacking124 写道
shiro的密码不可以为空吧!


可以啊
1 楼 jacking124 2014-06-13  
shiro的密码不可以为空吧!

相关推荐

    spring boot 集成 shiro 自定义密码验证 自定义freemarker标签根据权限渲染不同页面(推荐

    Spring Boot 集成 Shiro 自定义密码验证和 Freemarker 标签根据权限渲染不同页面 Shiro 是一个强大的权限管理框架,可以与 Spring Boot 集成,提供了一个灵活的权限管理系统。在这个示例中,我们将介绍如何将 Shiro...

    从实例入手学习Shiro自定义Realm实现查询数据进行验证示例代码.zip

    本实例将通过自定义Realm来演示如何使用Shiro从数据库中查询数据进行用户验证。 首先,我们需要了解 Realm 的基本概念。在Shiro中, Realm 是一个接口,它实现了认证和授权的功能。默认的 Realm 类型包括 JdbcRealm...

    SpringBoot Shiro配置自定义密码加密器代码实例

    SpringBoot Shiro 配置自定义密码加密器代码实例 在本篇文章中,我们将详细介绍如何在 SpringBoot 项目中配置自定义密码加密器代码实例,使用 Shiro 框架来实现身份认证和授权管理。Shiro 框架提供了一个灵活的安全...

    SpringBoot + shiro Demo 简单登录验证权限验证

    在这个Demo中,Shiro的主要作用可能是实现用户登录时的密码加密和验证,以及后续访问资源时的权限控制。 **密码加密** 在用户注册或登录时,为了保证用户信息安全,通常会对密码进行加密存储。Shiro提供了多种密码...

    Jeesite 登录login涉及到shiro验证和授权的流程分析

    - 密码验证成功后,用户的部分信息将被赋值到 Principal 对象,便于后续权限判断。 - 通过 `doGetAuthorizationInfo` 方法进行菜单授权。首先获取已验证的 `User`,然后使用 `UserUtils` 获取 `menuDao`,根据用户...

    shiro实现授权登陆验证

    Apache Shiro是一个强大的Java安全框架,它为应用程序提供了身份验证(Authentication)、授权(Authorization)以及会话管理(Session Management)等功能。在这个项目中,我们将会深入理解如何利用Shiro来实现登录...

    Shiro 身份验证、授权、密码和会话管理

    Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了身份验证、授权、密码管理和会话管理等功能,简化了在 Java 应用程序中处理安全性的问题。Shiro 的设计目标是使开发者能够专注于应用程序的安全逻辑,而...

    shiro权限框架自定义Realm示例

    在默认情况下,Shiro提供了一些预定义的Realm实现,如JDBCRealm、AuthorizingRealm等,但这些可能无法满足所有应用场景,因此我们需要自定义Realm来适配特定的数据存储结构和验证逻辑。 1. ** Realm的基本结构**:...

    shiro登录拦截校验demo

    Apache Shiro是一个强大的Java安全框架,它提供了身份验证(Authentication)、授权(Authorization)以及会话管理(Session Management)等功能,简化了在Java应用中处理安全问题的过程。"shiro登录拦截校验demo"是...

    spring mvc整合shiro登录 权限验证实例下载

    2. **配置Shiro**:创建一个Shiro配置类,配置 Realm(认证和授权信息的来源),例如自定义UserRealm,实现AuthenticationInfo和AuthorizationInfo的获取方法。 3. **创建过滤器链**:Shiro通过Filter Chain定义了...

    shiro-demo不自定义缓存.zip

    Shiro 提供了内置的身份验证机制,支持多种认证模式,如简单的密码匹配、基于 token 的认证等。在不自定义缓存的情况下,Shiro 会直接与后端数据存储(如数据库)进行交互,每次验证都需要查询用户信息。 2. **授权...

    shiro身份验证、授权

    在实际使用中,你可能需要创建一个自定义的`Realm`来连接你的数据源,然后配置Shiro以使用这个`Realm`进行认证和授权。此外,还可以利用Shiro的Filter链进行URL级别的权限控制,确保只有拥有相应权限的用户才能访问...

    Shiro Realm 权限的验证流程和缓存机制.docx

    当我们需要自定义权限验证时,通常会创建多个 Realm 类,每个类继承自 `AuthorizingRealm`。 权限验证流程: 当用户尝试访问受保护的资源时,Shiro 会按照在 Spring Boot 配置中定义 Realm Bean 的顺序进行权限验证...

    登录不会走自定义的FormAuthenticationFilter及其onLoginSuccess原因

    它负责验证用户提供的凭证(如用户名和密码),并根据验证结果进行相应的操作,如登录成功后的跳转或登录失败的提示。`onLoginSuccess`方法则是在用户身份验证成功后调用的回调方法,通常用于执行登录成功后的逻辑,...

    SpringBoot 整合Shiro 实现登录验证拦截功能

    SpringBoot 整合Apache Shiro 是为了实现在Web应用程序中进行用户身份验证和授权的高效方式。Shiro 提供了一套简洁的API,用于处理登录、权限控制、会话管理和密码加密等安全需求。在本项目中,我们将一步步了解如何...

    shiro_tool.zip

    1. **认证**:验证用户身份的过程,即用户提交凭证(如用户名/密码)后,Shiro会进行一系列检查,确认用户身份。 2. **授权**:权限控制,判断登录后的用户是否有执行特定操作的权限。 3. **会话管理**:Shiro可以...

    Apache shiro 1.13.0源码

    3. **Cryptography**:Shiro 提供了丰富的加密工具,包括密码哈希、消息摘要算法、对称和非对称加密等,确保数据的安全传输和存储。 4. **Session Management**:Shiro 可以独立于应用服务器进行会话管理,支持...

    Shiro安全登录认证、权限授权封装模块代码

    在 Shiro 中,你可以自定义 Realm 来连接你的数据源,并实现获取用户凭证(如用户名和密码)的方法。Shiro 提供了 `Subject.login()` 方法来执行登录操作,如果认证成功,Subject 将被绑定到当前线程。 3. **授权...

    shiro demo 例子

    - **测试类**:可能包含 JUnit 测试用例,用于验证 Shiro 功能的正确性。 - **资源文件**:如用户、角色和权限的定义,可能存在于 XML 或数据库中。 - **pom.xml**:Maven 项目配置文件,列出了 Shiro 和其他依赖库...

    springboot集成freemarker和shiro框架

    3. 自定义登录控制器:创建一个用于处理用户登录的Controller,调用Shiro进行身份验证。 **五、整合FreeMarker与Shiro** 1. 在FreeMarker模板中使用Shiro标签库:在.ftl文件顶部引入Shiro标签库: ```html ...

Global site tag (gtag.js) - Google Analytics