我应该正确存储第一个密码

时间:2018-05-06 12:08:57

标签: spring-security

我有一个关于存储" base"的问题spring security app的密码。我阅读文档和恕我直言,我应该先存储硬编码的地方。这是对的还是我应该怎么做? 例如,我发布了来自Spring security的defauld helloWorld代码。

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/", "/home").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                .permitAll()
                .and()
                .logout()
                .permitAll();
    }

    @Bean
    @Override
    public UserDetailsService userDetailsService() {
        PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();

        String s = encoder.encode("password");
        UserDetails user = User.withUsername("userName")
                .password(s)
                .roles("USER")
                .build();

        return new InMemoryUserDetailsManager(user);
    }
}

1 个答案:

答案 0 :(得分:1)

您有几种选择。

  1. 硬编码。
  2. 将用户名/传递存储在.property文件中。这为您提供了更大的灵活性,并且还能够禁用用户(例如,将名称设置为空并在代码中跳过它)
  3. 通过现有PasswordGenerator生成密码,并通过SQL手动将登录/传递添加到数据库。这样你就拥有了更大的灵活性,你可以拥有任意数量的初始用户(并且你可以随时删除它们),而且这种方法可以保证登录是唯一的(你需要在代码中进行一些特殊的处理来检查,任何新用户的登录名与第一个用户的登录名不匹配。