【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進行認證時,加密規則要和資料入庫時保持一致,包括加密規則,加密次數,鹽值,都要一致。
相關推薦
【Shiro】Shiro登入驗證失敗問題
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檔案中加入 &
【Shiro】Shiro從小白到大神(五)-自定義Realm
用資料庫的話,至少會涉及到這幾張表: 使用者表,角色表,許可權表 角色和使用者是一對多的關係 多個使用者可以擁有同一個角色 角色和許可權在這裡也是一對多的關係 一個角色可以擁有很多個許可權 資料庫表名: t_role 角色表 並插入如下資料
【筆記】shiro中的session設定:
1.匯入依賴包<dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-guartz</artifactId><version>
【Shiro】Shiro從小白到大神(三)-許可權認證(授權)
本節講許可權認證,也就是授權 基於角色的訪問控制和基於許可權的訪問控制的小例項 以及註解式授權和JSP標籤授權詳解 許可權認證 許可權認證核心要素 許可權認證,也就是訪問控制,即在應用中控制誰能訪問哪些資源 在許可權認證中,最核心的三
【筆記】shiro中的RememberMe設定:
修改spring-shiro.xml檔案<bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie"><property name="name" value="m
【shiro】shiro學習筆記1-shiro初識
認證流程 環境 程式碼 總結 認證流程 Created with Raphaël 2.1.0Start構造SecurityManager環境Subject.login
【Apache-Shiro】shiro配置詳解
Apache-Shiro旨在簡化身份驗證和授權,為企業應用提供安全解決方案。 1.配置web.xml <filter> <filter-name>shiroFilter</filter-name>
【python】帶圖片驗證碼的登入自動化實戰
近期在跟進新專案的時候,整體的業務線非常之長,會一直重複登入退出不同賬號的這個流程,所以想從登入開始實現部分的自動化。因為是B/S的架構,所以採用的是selenium的框架來實現。大致實現步驟如下: 1.環境準備 2.驗證碼爬取 3.識別方案選擇 4.影象處理和識別 5.自動化實現 一、
【5】GDI+ 生成驗證碼
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
【TestNG】TestNG重新執行失敗用例
前言 有時候我們希望失敗用例可以重新執行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 檔案粘進去,結束 本表單工具主要包括 字串為空判斷 判斷是否為手機號 判斷時候為身份證號 判斷是否為郵箱 判斷是否為
【Mysql】Ubuntu安裝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