Безопасность Spring - функция «Запомнить меня» (на базе Ha sh) - PullRequest
0 голосов
/ 23 апреля 2020

Я столкнулся с проблемой, когда Spring Security не позволяет мне создать Cook ie, который будет хранить учетные данные пользователя после входа в систему. Я следовал этому учебнику

Я проверил несколько браузеров на случай, если браузер не позволит мне сохранить повар ie.

Существует только повар JSESSIONID ie

WebSecurityConfig.java

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    UserDetailsServiceImpl userDetailsService;

    @Autowired
    private DaoAuthenticationProvider authProvider;

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

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

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/", "/home", "/register", "/webjars/**","/forgot-password","/reset-password","/confirm-reset").permitAll()
                .anyRequest().authenticated() // Każda inna podstrona wymaga autoryzacji

                .and()
                .formLogin()
                .loginPage("/login")
                .usernameParameter("email")
                .loginProcessingUrl("/login")
                .permitAll()

                .and()
                .logout()
                .deleteCookies("JSESSIONID")
                .permitAll()

                .and()
                .rememberMe()
                .key("uniqueAndSecret")
                .userDetailsService(userDetailsService)
                ;
    }

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

login.html

<div layout:fragment="form" layout:decorate="~{layouts/entry}">
    <form th:action="@{/login}" method="post">
        <div><label> Email : <input type="email" name="email"/> </label></div>
        <div><label> Password: <input type="password" name="password"/> </label></div>
        <div><label><input type="checkbox" name="remember-me" /><span>Remember me</span></label></div>
        <div><input type="submit" value="Sign In"/></div>
    </form>

    <a href="/forgot-password">Forgot Password?</a>
</div>

Спасибо за любые мысли!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...