最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot Shiro配置自定義密碼加密器代碼實例

 更新時間:2020年03月26日 09:19:33   作者:趙小胖0914  
這篇文章主要介紹了SpringBoot Shiro配置自定義密碼加密器代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

shiro主要有三大功能模塊:

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

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

3. Realms:用于進行權(quán)限信息的驗證,一般需要自己實現(xiàn)。

細分功能

  • 1. Authentication:身份認證/登錄(賬號密碼驗證)。
  • 2. Authorization:授權(quán),即角色或者權(quán)限驗證。
  • 3. Session Manager:會話管理,用戶登錄后的session相關(guān)管理。
  • 4. Cryptography:加密,密碼加密等。
  • 5. Web Support:Web支持,集成Web環(huán)境。
  • 6. Caching:緩存,用戶信息、角色、權(quán)限等緩存到如redis等緩存中。
  • 7. Concurrency:多線程并發(fā)驗證,在一個線程中開啟另一個線程,可以把權(quán)限自動傳播過去。
  • 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;
    //加密類型,密碼,鹽值,迭代次數(shù)
    Object tokenCredentials = new SimpleHash("md5", password, username, 2).toHex();
    //數(shù)據(jù)庫存儲密碼
    Object accountCredentials = getCredentials(info);
    //將密碼加密與系統(tǒng)加密后的密碼校驗,內(nèi)容一致就返回true,不一致就返回false
    return equals(tokenCredentials, accountCredentials);
  }
}

第一種方式:配置Bean

/**
 * Shiro自帶密碼管理器
 *
 * @return HashedCredentialsMatcher
 */
@Bean
public HashedCredentialsMatcher hashedCredentialsMatcher() {
 //Shiro自帶加密
 HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher();
 //散列算法使用md5
 credentialsMatcher.setHashAlgorithmName("md5");
 //散列次數(shù),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;
}

第二種方式:實現(xiàn)AuthorizingRealm類setCredentialsMatcher方法

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

工布江达县| 隆回县| 大英县| 新巴尔虎右旗| 卢氏县| 姜堰市| 合肥市| 锡林郭勒盟| 伊吾县| 彭泽县| 关岭| 永寿县| 佛冈县| 景谷| 昌平区| 靖远县| 五华县| 当涂县| 榆中县| 电白县| 六枝特区| 惠州市| 商河县| 广宁县| 南昌市| 江西省| 徐州市| 丹凤县| 绥江县| 正宁县| 台中市| 兴海县| 德钦县| 汉源县| 六盘水市| 滕州市| 若羌县| 昌宁县| 泰州市| 小金县| 河西区|