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
踩
分享到:
2013-12-11 16:00
浏览 33382
评论
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的密码不可以为空吧!