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

SpringBoot Shiro配置自定義密碼加密器代碼實(shí)例

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

shiro主要有三大功能模塊:

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

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

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

細(xì)分功能

  • 1. Authentication:身份認(rèn)證/登錄(賬號(hào)密碼驗(yàn)證)。
  • 2. Authorization:授權(quán),即角色或者權(quán)限驗(yàn)證。
  • 3. Session Manager:會(huì)話管理,用戶登錄后的session相關(guān)管理。
  • 4. Cryptography:加密,密碼加密等。
  • 5. Web Support:Web支持,集成Web環(huán)境。
  • 6. Caching:緩存,用戶信息、角色、權(quán)限等緩存到如redis等緩存中。
  • 7. Concurrency:多線程并發(fā)驗(yàn)證,在一個(gè)線程中開啟另一個(gè)線程,可以把權(quán)限自動(dòng)傳播過(guò)去。
  • 8. Testing:測(cè)試支持;
  • 9. Run As:允許一個(gè)用戶假裝為另一個(gè)用戶(如果他們?cè)试S)的身份進(jìn)行訪問(wèn)。
  • 10. Remember Me:記住我,登錄后,下次再來(lái)的話不用登錄了。

自定義認(rèn)證加密方式

/**
 * 自定義認(rèn)證加密方式
 */
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ù)庫(kù)存儲(chǔ)密碼
    Object accountCredentials = getCredentials(info);
    //將密碼加密與系統(tǒng)加密后的密碼校驗(yàn),內(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;
}

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

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

沭阳县| 宜宾市| 图木舒克市| 六枝特区| 于田县| 桃园县| 徐汇区| 鹰潭市| 鄄城县| 荆门市| 洪雅县| 海阳市| 昌平区| 无极县| 岫岩| 陇川县| 冷水江市| 汽车| 陆丰市| 大丰市| 皮山县| 红原县| 安义县| 枣强县| 岚皋县| 桐乡市| 灵武市| 新乡市| 临西县| 荥经县| 松江区| 商城县| 三河市| 铜梁县| 体育| 德清县| 金寨县| 乐至县| 五指山市| 磐安县| 朝阳市|