地方门户网站管理系统,美食网站程序,佛山手机建网站,2023营业执照年检在上一篇文章中#xff0c;我们使用jdbc和md5密码编码将密码编码添加到了我们的spring安全配置中。 但是#xff0c;在定制UserDetailsServices的情况下#xff0c;我们需要对安全配置进行一些调整。 我们需要创建一个DaoAuthenticationProvider bean#xff0c;并将… 在上一篇文章中我们使用jdbc和md5密码编码将密码编码添加到了我们的spring安全配置中。 但是在定制UserDetailsServices的情况下我们需要对安全配置进行一些调整。 我们需要创建一个DaoAuthenticationProvider bean并将其设置为AuthenticationManagerBuilder。 由于我们需要一个Custom UserDetailsService因此我将使用Spring Security / MongoDB示例代码库。 我们要做的是更改我们的Spring Security配置。 package com.gkatzioura.spring.security.config;import com.gkatzioura.spring.security.service.CustomerUserDetailsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Profile;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.authentication.encoding.Md5PasswordEncoder;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;import javax.sql.DataSource;/*** Created by gkatzioura on 10/5/16.*/
EnableWebSecurity
Profile(encodedcustompassword)
public class PasswordCustomEncodedSecurityConfig extends WebSecurityConfigurerAdapter {Beanpublic UserDetailsService mongoUserDetails() {return new CustomerUserDetailsService();}Beanpublic DaoAuthenticationProvider authProvider() {DaoAuthenticationProvider authProvider new DaoAuthenticationProvider();authProvider.setUserDetailsService(mongoUserDetails());authProvider.setPasswordEncoder(new BCryptPasswordEncoder());return authProvider;}Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.authenticationProvider(authProvider());}Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers(/public).permitAll().anyRequest().authenticated().and().formLogin().permitAll().and().logout().permitAll();}} 在大多数情况下这可以。 但是我们也可能希望推出自己的PasswordEncoder这非常简单。 package com.gkatzioura.spring.security.encoder;import org.springframework.security.crypto.bcrypt.BCrypt;
import org.springframework.security.crypto.password.PasswordEncoder;/*** Created by gkatzioura on 10/5/16.*/
public class CustomPasswordEncoder implements PasswordEncoder {Overridepublic String encode(CharSequence rawPassword) {String hashed BCrypt.hashpw(rawPassword.toString(), BCrypt.gensalt(12));return hashed;}Overridepublic boolean matches(CharSequence rawPassword, String encodedPassword) {return BCrypt.checkpw(rawPassword.toString(), encodedPassword);}} 因此我们将更改配置以使用新的PasswordEncoder Beanpublic DaoAuthenticationProvider authProvider() {DaoAuthenticationProvider authProvider new DaoAuthenticationProvider();authProvider.setUserDetailsService(mongoUserDetails());authProvider.setPasswordEncoder(new CustomPasswordEncoder());return authProvider;} 下一步将是创建编码后的密码。 Testpublic void customEncoder() {CustomPasswordEncoder customPasswordEncoder new CustomPasswordEncoder();String encoded customPasswordEncoder.encode(custom_pass);LOGGER.info(Custom encoded encoded);} 然后将具有哈希密码的用户添加到我们的mongodb数据库中。 db.users.insert({name:John,surname:doe,email:john2doe.com,password:$2a$12$qB.L7buUPi2RJHZ9fYceQ.XdyEFxjAmiekH9AEkJvh1gLFPGEf9mW,authorities:[user,admin]}) 我们所需要做的就是更改gradle脚本上的默认配置文件我们一切顺利。 bootRun {systemProperty spring.profiles.active, encodedcustompassword
} 您可以在github上找到源代码。 翻译自: https://www.javacodegeeks.com/2016/10/spring-security-custom-password-encoding.html