适当的组件在Spring MVC中加密的位置

时间:2017-02-22 19:29:23

标签: java spring-mvc spring-security

我是一个刚开始使用Spring MVC的新手(不幸的是,文档对我没什么帮助),我仍然在试图使用Jasypt PasswordEncrypter来加密通过注册表单收到的密码。直接在用户模型密码设置器中进行或者我应该使用服务是不好的做法吗?另外,我相信这可以与Spring Security集成,以便将加密器用于身份验证?感谢。

1 个答案:

答案 0 :(得分:0)

验证时

使用authenticationProvider`对密码后验证进行编码

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserDetailsService userDetailsService;

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(authProvider());
    }

    @Bean
    public DaoAuthenticationProvider authProvider() {
        DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
        authProvider.setUserDetailsService(userDetailsService);
        authProvider.setPasswordEncoder(encoder());
        return authProvider;
    }

    @Bean
    public PasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }
}

关于用户创建

userService

中编码
@Autowired
private PasswordEncoder passwordEncoder;

然后

user.setPassword(passwordEncoder.encode(userDto.getPassword()));

来源:Registration with Spring Security – Password Encoding

Another example

此外,请务必定义要保护的密码的输入