la integración de springboot HashedCredentialsMatcher shiro

Shiro CredentialsMatcher proporciona una interfaz para el cifrado de la contraseña y la contraseña de verificación de los servicios, pero es CredentialsMatcher HashedCredentialsMatcher una clase de implementación. Redacción del proyecto, utilizará el cifrado asimétrico es siempre la contraseña del usuario, la corriente actual de cifrado asimétrico es SHA, sal y procesada en el SHA, y HashedCredentialsMatcher también nos permite especificar sus propios algoritmos y sal.

ShiroConfig perfil:

@Bean
     público HashedCredentialsMatcher hashedCredentialsMatcher () { 
        HashedCredentialsMatcher hashedCredentialsMatcher = nuevo nuevo HashedCredentialsMatcher ();
         // cifrado 
        hashedCredentialsMatcher.setHashAlgorithmName ( "el SHA-512" );
         // Número cifrados 
        hashedCredentialsMatcher.setHashIterations (2 );
         // almacenado contraseña hash para un hexadecimal
         // hashedCredentialsMatcher.isStoredCredentialsHexEncoded (); 
        retorno hashedCredentialsMatcher; 
    }

 

ShiroRealm:

@ Override
     protegida AuthenticationInfo doGetAuthenticationInfo (AuthenticationToken token) tiros de AuthenticationException { 
        System.out.println ( "================= realizar la lógica de autenticación =========== ======== " );
         // juicio Shiro escritura lógica para determinar el nombre de usuario y contraseña
         // consulta de la base de datos para el nombre de usuario y contraseña 

        // obtener pase controlador sobre el token 
        UsernamePasswordToken tokens = (UsernamePasswordToken) contador; 
        el usuario usuario = userService.selectByUsername (tokens.getUsername ()); 

        IF (User == nula ) {
             de banda  nueva nueva UnknownAccountException (); //¿No ha encontrado la cuenta   
        } 
        
        SI (user.getIsValid () == 0 ) {
             de banda  nueva nueva LockedAccountException (); // cuenta no válido 
        } 
        
        // esto se comprueba automáticamente por el HashedCredentialsMatcher configuración 
        de retorno  nueva nueva SimpleAuthenticationInfo (Usuario, user.getPassword () , 
                ByteSource.Util.bytes (user.getSalt ()), getName ()); // parámetros son:
                                                                                                                      

 

ShiroUtils generación de criptografía asimétrica:

Importación org.apache.commons.lang3.RandomStringUtils;
 Importación org.apache.shiro.crypto.hash.SimpleHash; 

público  de clase ShiroUtils {
     / ** 
     * PWD_SALT_LENGTH: Sal valor cifrado longitud de la contraseña 
     * / 
    pública  estática  final  int . PWD_SALT_LENGTH = 6 ;
     / ** 
     * PWD_ALGORITHM_NAME: algoritmos de cifrado de la contraseña 
     * / 
    pública  estática  final cadena PWD_ALGORITHM_NAME = "el SHA-512" ; 

    / ** 
     * PWD_ALGORITHM_NAME: número de cifrado de la contraseña 
     * / 
    público  estáticas  finales  int PWD_HASH_ITERATIONS = 2 ; 

    / **
     *生成密码<br/> 
     * 
     * @ param PWD 
     * @param sal 
     * @return 
     * / 
    pública  estática Cadena generatePwdEncrypt (String PWD, sal String) { 
        SimpleHash de hash =
                 nueva SimpleHash (PWD_ALGORITHM_NAME, pwd, sal, PWD_HASH_ITERATIONS);
        volver hash.toString (); 
    } 

    / ** 
     *生成盐值<br/> 
     * 
     * @return 
     * / 
    pública  estática Cadena generateSalt () {
         retorno RandomStringUtils.randomAlphabetic (PWD_SALT_LENGTH);
    } 
    
    
    Pública  estáticas  vacíos principales (args String []) { 
        Cadena generateSalt = generateSalt (); 
        Cadena generatePwdEncrypt = generatePwdEncrypt ( "123456" , generateSalt); 
        System.out.println (generateSalt); 
        System.out.println (generatePwdEncrypt); 
        
    } 
    
}

 

Supongo que te gusta

Origin www.cnblogs.com/chong-zuo3322/p/12447729.html
Recomendado
Clasificación