使用shiro默認的密碼驗證系統驗證加密密碼

[main]
#爲了驗證加密過的密碼,自定義一個jdbcRealm
jdbcRealm = com.cqw.shiro.MyJdbcRealm
jdbcRealm.permissionsLookupEnabled = true
jdbcRealm.authenticationQuery = SELECT pwd FROM user  WHERE userName = ?

利用shiro本身的密碼驗證程序自動login,但因爲存儲在數據庫中是加密過的byte[],而shiro自動的是使用以下方式得到:java

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

致使密碼驗證始終有問題數據庫

因而自定義了一個MyJdbcRealm,用來取代系統默認的jdbcrealmapache

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啦ide

啦啦啦啦啦啦加密

相關文章
相關標籤/搜索