Предисловие
Эта статья в основном представляет вам метод шифрования Spring Security 5.x, который совместим с несколькими паролями. Это обменивается вашей ссылкой и обучением. Я не скажу многое ниже, давайте посмотрим на подробное введение вместе.
1. Spring Security PasswordEncoder
Spring Security 5 не требует метода шифрования паролей, но префикс пароля пользователя указывает метод шифрования, например:
Spring Security официально рекомендует использовать более безопасный метод шифрования BCRYPT.
Это позволяет поддержать несколько методов шифрования в одной и той же системе, что облегчает мигрирование пользователей. Метод шифрования, поддерживаемый Spring Security 5, определен в PasswordEncoderFactories:
открытый класс passwordEncoderfactories {public static passwordEncoder createeLegatingPasswordEncoder () {string encodingId = "bcrypt"; Map <string, passwordEncoder> encoders = new hashmap (); encoders.put (encodingid, new bcryptpasswordencoder ()); encoders.put ("ldap", новый ldapshapasswordencoder ()); encoders.put ("md4", new md4passwordencoder ()); encoders.put ("md5", new MassagedIgestPasswordEncoder ("md5")); encoders.put ("noop", nooppasswordencoder.getInstance ()); encoders.put ("pbkdf2", new pbkdf2passwordencoder ()); encoders.put ("scrypt", new scryptpasswordencoder ()); encoders.put ("sha-1", new MassagedIgestPasswordEncoder ("sha-1")); Encoders.put ("Sha-256", New MassagedIgestPasswordEncoder ("SHA-256")); Encoders.put ("SHA256", New StandardPasswordEncoder ()); вернуть новый DelegatingPasswordEncoder (EncodingID, Encoders); } private passwordEncoderFactory () {}}2 тест
2.1 pom.xml
<? xml version = "1.0" Encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <dolidayversion> 4.0.0 </modelversion> <groupid> com.hfcsbc </artifact> </artifact> </artifact> </modelversion> <groupid> com.hfcsbc <sersion> 0.0.1-snapshot </version> <Cackaging> jar </packaging> <mame> Безопасность </name> <Описание> Демо-проект для Spring Boot </description> <parent> <groupd> org.springframework.boot </GroupID> <Artifactid> spring-boot-starter-parent </artifactid> <seriate> 2.0.0.0.m7 </retrypater </artifactid> <seriate> 2.0.0.0.m7 <//rethart-starter> <serifate> <serse> <merifate> <//rethart-parenter </artifactid> <seriate>. Поиск родителя из репозитория-> </parent> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.Report.OutputEncoding> utf-8 </project.Reporting.OutputEncoding> <java.version> 1.8 <dependency><groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies> <build> <plugins> <blicin> <groupid> org.springframework.boot </GroupId> <ArtifactId> Spring-boot-maven-plugin </artifactid> </placin> </plugins> </build> <Репозитории> <mepository> <id> Spring-snapshots </id> <mame> Spring Snaphots </name> <URL> https://repo.spring.io/snapshot </url> <ploshots> <Nabled> true </enabled> </snapshots> </Repository> <perpository> <id> Spring-milestones </id> <mame> </name> <url> https://rep <ploshots> <Nabled> false </enabled> </sposhots> </Repository> </Repository> </Repository> </Repository> <blicinRepository> <id> Spring-snapshots </id> <mame> Spring Snapshots </name> <url> https://repo.spring.io/snapshot </url> https://repo.spring.io/snapshot </url> https://repo.spring.io/snapshot </name> <crol> https://repo.spring.io/snapshot </ry> <enabled>true</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepository> </pluginRepositories> </project>
2.2 Тест
Spring Security 5.x использует шифрование BCRYPT по умолчанию
@Slf4jpublic class domainuserdetailsservice {public static void main (string [] args) {passwordEncoder passwordEncoder = passwordEncoderFactories.createdelegatingPasswordencoder (); String encode = passwordEncoder.encode ("пароль"); log.info ("зашифрованный пароль:" + encode); log.info ("Сравнение паролей bcrypt:" + passwordEncoder.matches ("пароль", кодексы)); String md5password = "{md5} 88e2d8cd1e92fd5544c8621508cd706b"; // Пароль до шифрования MD5: пароль log.info ("MD5 Сравнение паролей:" + passwordEncoder.matches ("пароль", Encode)); }}Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.