亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

宁国市| 滨海县| 平南县| 隆林| 时尚| 图片| 修文县| 公安县| 溧水县| 乌海市| 天等县| 晋城| 宁南县| 汪清县| 东兰县| 惠安县| 正安县| 高平市| 宁化县| 旬邑县| 高尔夫| 栾川县| 灵川县| 靖远县| 健康| 屏边| 沁源县| 神池县| 九龙城区| 木兰县| 汤原县| 晋城| 永胜县| 洞口县| 珲春市| 浦东新区| 左云县| 蓝田县| 寻乌县| 墨竹工卡县| 洪洞县|