中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot Shiro中怎么配置一個自定義密碼加密器

發布時間:2021-06-12 17:53:47 來源:億速云 閱讀:288 作者:Leah 欄目:編程語言

這篇文章給大家介紹SpringBoot Shiro中怎么配置一個自定義密碼加密器,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

shiro主要有三大功能模塊:

1. Subject:主體,一般指用戶。

2. SecurityManager:安全管理器,管理所有Subject,可以配合內部安全組件。(類似于SpringMVC中的DispatcherServlet)

3. Realms:用于進行權限信息的驗證,一般需要自己實現。

細分功能

  • 1. Authentication:身份認證/登錄(賬號密碼驗證)。

  • 2. Authorization:授權,即角色或者權限驗證。

  • 3. Session Manager:會話管理,用戶登錄后的session相關管理。

  • 4. Cryptography:加密,密碼加密等。

  • 5. Web Support:Web支持,集成Web環境。

  • 6. Caching:緩存,用戶信息、角色、權限等緩存到如redis等緩存中。

  • 7. Concurrency:多線程并發驗證,在一個線程中開啟另一個線程,可以把權限自動傳播過去。

  • 8. Testing:測試支持;

  • 9. Run As:允許一個用戶假裝為另一個用戶(如果他們允許)的身份進行訪問。

  • 10. Remember Me:記住我,登錄后,下次再來的話不用登錄了。

自定義認證加密方式

/**
 * 自定義認證加密方式
 */
public static class CustomCredentialsMatcher extends SimpleCredentialsMatcher {
  @Override
  public boolean doCredentialsMatch(AuthenticationToken authcToken, AuthenticationInfo info) {
    UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
    //加密類型,密碼,鹽值,迭代次數
    Object tokenCredentials = new SimpleHash("md5", password, username, 2).toHex();
    //數據庫存儲密碼
    Object accountCredentials = getCredentials(info);
    //將密碼加密與系統加密后的密碼校驗,內容一致就返回true,不一致就返回false
    return equals(tokenCredentials, accountCredentials);
  }
}

第一種方式:配置Bean

/**
 * Shiro自帶密碼管理器
 *
 * @return HashedCredentialsMatcher
 */
@Bean
public HashedCredentialsMatcher hashedCredentialsMatcher() {
 //Shiro自帶加密
 HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher();
 //散列算法使用md5
 credentialsMatcher.setHashAlgorithmName("md5");
 //散列次數,2表示md5加密兩次
 credentialsMatcher.setHashIterations(2);
 credentialsMatcher.setStoredCredentialsHexEncoded(true);
 return credentialsMatcher;
}

/**
 * 將自己的身份驗證器驗證方式加入容器
 *
 * @return CustomRealm
 */
@Bean
public CustomRealm shiroRealm() {
 CustomRealm shiroRealm = new CustomRealm();
 //shiroRealm.setCacheManager(cacheManager());
 //加入密碼管理
 //shiroRealm.setCredentialsMatcher(hashedCredentialsMatcher());//Shiro自帶密碼管理器
 shiroRealm.setCredentialsMatcher(new CustomCredentialsMatcher());//自定義密碼管理器
 return shiroRealm;
}

第二種方式:實現AuthorizingRealm類setCredentialsMatcher方法

public class CustomRealm extends AuthorizingRealm {
 ...
 ...
 ...
  /**
   * 設置自定義認證加密方式
   *
   * @param credentialsMatcher 默認加密方式
   */
  @Override
  public void setCredentialsMatcher(CredentialsMatcher credentialsMatcher) {
  		//自定義認證加密方式
    CustomCredentialsMatcher customCredentialsMatcher = new CustomCredentialsMatcher();
    // 設置自定義認證加密方式
    super.setCredentialsMatcher(customCredentialsMatcher);
  }
}

關于SpringBoot Shiro中怎么配置一個自定義密碼加密器就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜康市| 尉氏县| 鹤岗市| 界首市| 辉南县| 会宁县| 金秀| 改则县| 松原市| 张家界市| 通州市| 永顺县| 康保县| 南陵县| 崇州市| 闸北区| 余江县| 祁东县| 渝北区| 凤冈县| 武安市| 晋州市| 丹东市| 抚顺市| 高淳县| 尼勒克县| 隆德县| 楚雄市| 剑河县| 沂水县| 平潭县| 元朗区| 屏东市| 扶沟县| 福安市| 曲松县| 利津县| 剑川县| 西青区| 定陶县| 绥阳县|