使用shiro默认的密码验证系统验证加密密码

[main]
#为了验证加密过的密码,自定义一个jdbcRealm
jdbcRealm = com.cqw.shiro.MyJdbcRealm
jdbcRealm.permissionsLookupEnabled = true
jdbcRealm.authenticationQuery = SELECT pwd FROM user  WHERE userName = ?

利用shiro自己的密码验证程序自动login,但由于存储在数据库中是加密过的byte[],而shiro自动的是使用如下方式获得:

result[0] = rs.getString(1);

导致密码验证始终有问题

于是自定义了一个MyJdbcRealm,用来取代系统默认的jdbcrealm

public class MyJdbcRealm extends JdbcRealm {

	/* (non-Javadoc)
	 * @see org.apache.shiro.realm.jdbc.JdbcRealm#doGetAuthenticationInfo(org.apache.shiro.authc.AuthenticationToken)
	 */
	@Override
	protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
        UsernamePasswordToken upToken = (UsernamePasswordToken) token;
        String username = upToken.getUsername();
        //自己的方法取得数据库中的密码
        Record user = User.dao.findByUserName(username);
        char[] userPwd = ToolString.BytesToStr(user.get(User.column_userPwd)).toCharArray();
        
        SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(username, userPwd, getName());
        
        return info;


	}

	

}

这样,再验证就ok啦

啦啦啦啦啦啦

 

转载于:https://my.oschina.net/muduclark/blog/681122

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值