1. 程式人生 > >【Shiro】Shiro登入驗證失敗問題

【Shiro】Shiro登入驗證失敗問題

shiro登入驗證一直失敗:

原因:

在使用者註冊時,採用如下加密方法:

/**
 * md5加密工具
 * @param var
 * 要加密的字串
 * @param iterations
 * 加密次數
 * @return
 */
public static String encrypt(String var,int iterations){
    return new SimpleHash("md5",var,SALT.getBytes(),iterations).toHex();
}

在ShiroConfig中:

@Bean
public ShiroRealm shiroRealm() {
    ShiroRealm shiroRealm = new ShiroRealm();
    return shiroRealm;
}

/**
 * 加密
 *
 * @return
 */
@Bean
public HashedCredentialsMatcher hashedCredentialsMatcher() {
    HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher();
    hashedCredentialsMatcher.setHashAlgorithmName("md5");//雜湊演算法
    hashedCredentialsMatcher.setHashIterations(2);//雜湊的次數
    return hashedCredentialsMatcher;
}

因為註冊時存入資料庫的是經過兩次MD5加密的,但是在ShiroRealm中卻未指定加密方法,導致UserPasswordToken是以明文存在的,所以需要在shiroRealm()中加上:

//設定加密方式
shiroRealm.setCredentialsMatcher(hashedCredentialsMatcher());

同時必須保持入庫時的加密方法和Shiro登入驗證時的加密方法一致,包括加密次數、鹽值也要一致。

修改hashedCredentialsMatcher()如下:

@Bean
public HashedCredentialsMatcher hashedCredentialsMatcher() {
    HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher();
    hashedCredentialsMatcher.setHashAlgorithmName("md5");//雜湊演算法
    hashedCredentialsMatcher.setHashIterations(2);//雜湊的次數
    hashedCredentialsMatcher.setStoredCredentialsHexEncoded(true);//轉化為16進位制(與入庫時保持一致)
    return hashedCredentialsMatcher;
}

(注意:我這裡採用固定鹽值,實際上應該不同使用者不同鹽值,一般為使用者id+固定字串,鹽值略)

總結:

在使用Shiro進行認證時,加密規則要和資料入庫時保持一致,包括加密規則,加密次數,鹽值,都要一致。

相關推薦

ShiroShiro登入驗證失敗問題

shiro登入驗證一直失敗: 原因: 在使用者註冊時,採用如下加密方法: /** * md5加密工具 * @param var * 要加密的字串 * @param iterations * 加密次數 * @return */ public

原始碼分析Apache Shiro 加密與登入驗證

前言 最近用到Shiro安全框架,做加密驗證的時候遇到一些問題,對Shiro內部登入驗證流程有些疑惑,網上的多數Shiro的環境搭建只是簡單的明文密碼匹配,甚至有些文章的註釋也不盡正確。在這裡記錄下通過分析原始碼的整理。 大綱 使用Shiro提供的類進行密碼加密

分類 - Shiro

專欄達人 授予成功建立個人部落格專欄

ssm配置完成shiro,實現登入驗證的功能

花了一天時間,算是完成了shiro登入驗證的這一基本功能。 https://www.w3cschool.cn/shiro/andc1if0.html 這個教程可以多看看,核心的基礎功能很重要。 實現shiro 第一步,引入所需要的依賴 在pom.xml檔案中加入 &

ShiroShiro從小白到大神(五)-自定義Realm

用資料庫的話,至少會涉及到這幾張表: 使用者表,角色表,許可權表 角色和使用者是一對多的關係 多個使用者可以擁有同一個角色 角色和許可權在這裡也是一對多的關係 一個角色可以擁有很多個許可權 資料庫表名: t_role 角色表 並插入如下資料

筆記shiro中的session設定:

1.匯入依賴包<dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-guartz</artifactId><version>

ShiroShiro從小白到大神(三)-許可權認證(授權)

本節講許可權認證,也就是授權 基於角色的訪問控制和基於許可權的訪問控制的小例項 以及註解式授權和JSP標籤授權詳解 許可權認證 許可權認證核心要素 許可權認證,也就是訪問控制,即在應用中控制誰能訪問哪些資源 在許可權認證中,最核心的三

筆記shiro中的RememberMe設定:

修改spring-shiro.xml檔案<bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie"><property name="name" value="m

shiroshiro學習筆記1-shiro初識

認證流程 環境 程式碼 總結 認證流程 Created with Raphaël 2.1.0Start構造SecurityManager環境Subject.login

Apache-Shiroshiro配置詳解

Apache-Shiro旨在簡化身份驗證和授權,為企業應用提供安全解決方案。 1.配置web.xml <filter> <filter-name>shiroFilter</filter-name>

python帶圖片驗證碼的登入自動化實戰

近期在跟進新專案的時候,整體的業務線非常之長,會一直重複登入退出不同賬號的這個流程,所以想從登入開始實現部分的自動化。因為是B/S的架構,所以採用的是selenium的框架來實現。大致實現步驟如下:   1.環境準備   2.驗證碼爬取   3.識別方案選擇   4.影象處理和識別   5.自動化實現 一、

5GDI+ 生成驗證

splay 小應用 eric gen 前景 num 微軟 param graphic 這裏我們做一個小應用,就是繪制一個如下圖所示的驗證碼圖片。並且點擊驗證碼的時候會自動切換。 實現思路如下: 通過Random生成隨機數或字符及驗證碼 通過驗證碼內容長度生成指定大小的圖

精華PHP網站驗證碼不顯示的終結解決方案

brief 重新 pad enter 批量 list 展開 href lis PHP網站驗證碼不顯示,這個是個很基礎的PHP問題了,不過有點時候會比較讓開發者比較頭疼了。很多解決方案僅僅考慮到gd2,卻忽略了另外一個很重要的因素了,相信在了解本教程之後,驗證碼不顯示

Python短信驗證碼平臺查詢賬戶余額demo---創藍253雲通訊平臺案例

epo json desc des 驗證碼 余額 其中 pconnect .com #!/usr/local/bin/python#-- coding:utf-8 -- Author: jacky Time: 14-2-22 下午11:48 Desc: 短信http接口的p

TestNGTestNG重新執行失敗用例

前言 有時候我們希望失敗用例可以重新執行N次,已避免出現因網路不穩定之類的情況導致的失敗,那麼如何實現呢,有如下方法: 1、直接重執行失敗用例 在每次用例執行完成後在用例結果輸出目錄會有叫做testng-failed.xml的檔案,此檔案內部就是失敗用例,需要注意的是此檔案內部將

Android用apksigner驗證apk簽名

0x01 apksigner驗證簽名的方法 apksigner在android sdk中已經整合好了,驗證apk的簽名使用方法如下,更多使用方法參考[1]。 apksigner verify -v --print-certs xxx.apk 引數: -v, --verbos

ios表單驗證工具

新建一個NSObject類,起一個工具類的名字,我的是QCTools 然後把下邊程式碼分 .h   .m  檔案粘進去,結束 本表單工具主要包括 字串為空判斷 判斷是否為手機號 判斷時候為身份證號 判斷是否為郵箱 判斷是否為

MysqlUbuntu安裝Mysql失敗,Unable to locate package mysql-client-core-5.7

Ubuntu安裝Mysql失敗,Unable to locate package mysql-client-core-5.7 問題描述 在Ubuntu安裝Mysql時,出現了下面這個問題 報錯為:Un

反思演算法期中考試失敗

現在是2018年11月8日 下午6點06分。 一個小時前,我人生中的首次演算法考試以失敗收場了。 現在靜下心來反思一下整場考試的過程。 首先,是學校方面的問題: ①第一道題目格式出的有問題。 ②開場四十分鐘DEV自己炸了。 然後,我就是自己的問題: ①第一題現場

Web登入其實沒那麼簡單

1、一個簡單的HTML例子看看使用者資訊保安 標準的HTML語法中,支援在form表單中使用<input></input>標籤來建立一個HTTP提交的屬性,現代的WEB登入中,常見的是下面這樣的表單:   <form action&nbs