shiro自定義密碼匹配驗證,密碼加密驗證

shiro自定義密碼匹配驗證,密碼加密驗證。javascript

1.更改shiro安全管理配置html

 

[html] view plain copyjava

 

  1. <!-- 定義Shiro安全管理配置 -->  
  2.     <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">  
  3. <!--         <property name="realm" ref="systemAuthorizingRealm" />  -->  
  4.         <property name="realm" ref="userRealm" />    
  5.         <property name="sessionManager" ref="sessionManager" />  
  6.         <property name="cacheManager" ref="shiroCacheManager" />  
  7.     </bean>  
  8.       
  9.     <!-- 3.1 直接配置繼承了org.apache.shiro.realm.AuthorizingRealm的bean -->  
  10.      <bean id="userRealm" class="com.thinkgem.jeesite.modules.sys.security.SystemAuthorizingRealm">   
  11.         <!-- 配置密碼匹配器 -->   
  12.        <property name="credentialsMatcher" ref="credentialsMatcher"/>     
  13.     </bean>  
  14.       
  15.      <!-- 憑證匹配器 -->  
  16.     <bean id="credentialsMatcher" class="com.thinkgem.jeesite.modules.sys.security.CustomCredentialsMatcher">  
  17.     </bean>   


 

 

<property name="realm" ref="systemAuthorizingRealm" /> ,spring自動注入。web

 

2.自定義密碼驗證算法

 

[java] view plain copyspring

 

  1. /** 
  2.  * Description: 告訴shiro如何驗證加密密碼,經過SimpleCredentialsMatcher或HashedCredentialsMatcher 
  3.  * @Author: wjl 
  4.  * @Create Date: 2017-3-14 
  5.  */  
  6.   
  7. public class CustomCredentialsMatcher extends SimpleCredentialsMatcher {  
  8.       
  9.     @Override   
  10.     public boolean doCredentialsMatch(AuthenticationToken authcToken, AuthenticationInfo info) {    
  11.              
  12.     UsernamePasswordToken token = (UsernamePasswordToken) authcToken;   
  13.     Object accountCredentials = getCredentials(info);  
  14. //  String pwd =encrypt32(String.valueOf(token.getPassword()));//md5 32位加密  
  15.     String pwdType =String.valueOf(token.getPassword());// 判斷一下密碼是不是用戶輸入的,仍是JCIS傳過來的  
  16.     if(pwdType.length() == 32){  
  17.     return equals(pwdType, accountCredentials); //密碼長度=32位,說明是md5加密過,是從xx傳進來的 32位加密。  
  18.     }   
  19.     String pwdUser =encrypt32(String.valueOf(token.getPassword()));//不等於32 是用戶輸入的密碼。 若是用戶輸入的密碼長度位32那麼裏面會有一個bug  
  20.     return equals(pwdUser, accountCredentials);  
  21.     //將密碼加密與系統加密後的密碼校驗,內容一致就返回true,不一致就返回false   
  22.     //return super.doCredentialsMatch(token, info) ;  
  23.     }  
  24.       

3.更改密碼驗證,註釋掉自帶的。apache

[java] view plain copy安全

 

  1.     /** 
  2.      * 設定密碼校驗的Hash算法與迭代次數 
  3.      */  
  4. //  @PostConstruct  
  5. //  public void initCredentialsMatcher() {  
  6. //      HashedCredentialsMatcher matcher = new HashedCredentialsMatcher(SystemService.HASH_ALGORITHM);  
  7. //      matcher.setHashIterations(SystemService.HASH_INTERATIONS);  
  8. //      setCredentialsMatcher(matcher);  
  9. //    //  setCredentialsMatcher(new CustomCredentialsMatcher());    
  10. //  }  


 若是不註釋就是用這種方式也能夠。session

 

[javascript] view plain copyide

 

  1. /** 
  2.      * 設定密碼校驗的Hash算法與迭代次數 
  3.      */  
  4.     @PostConstruct  
  5.     public void initCredentialsMatcher() {    
  6.        setCredentialsMatcher(new CustomCredentialsMatcher());    
  7.     }  
相關文章
相關標籤/搜索