Сбой при входе в систему безопасности при загрузке Spring - PullRequest
0 голосов
/ 02 июля 2018

Я хочу проверить личность пользователя при отправке запроса localhost:8080/submit, поэтому я добавил следующее в класс SecurityConfig:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
            .authorizeRequests()
            .antMatchers("/submit").access("hasRole('WORKER')")
            .antMatchers("/**").permitAll()
            .and()
            .formLogin()
            .loginPage("/login")
            .and()
            .logout()
            .logoutSuccessUrl("/")
            .and()
            .rememberMe()
            .tokenValiditySeconds(4838400)
            .key("workerKey");
}

Хотелось бы, чтобы страница могла перенаправляться на localhost:8080/login, когда я вводил localhost:8080/submit в поле адреса. Моя рабочая сущность имеет роль «РАБОТНИК»:

@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
    return Arrays.asList(new SimpleGrantedAuthority("WORKER"));
}

Я могу зарегистрировать учетную запись и перенаправить на страницу входа при вводе «localhost: 8080 / submit». Но когда я ввожу правильное имя пользователя и пароль, он отправляет мне сообщение об ошибке, а не страницу отправки:

Произошла непредвиденная ошибка (тип = Запрещено, статус = 403). Запрещено

Моя страница отправки - это просто страница с приветствием. Мои отображения

@RequestMapping(value = "/login", method = RequestMethod.GET)
public String showLogin() {
    return "login";
}

@RequestMapping(value = "/submit", method = RequestMethod.GET)
public String showSubmit() {
    return "submit";
}

И когда я снова ввел localhost:8080/submit, на этот раз он не перенаправил на страницу входа. Вместо этого он перенаправляет на страницу ошибки напрямую и показывает ту же ошибку. Так что мне запретить перенаправлять на страницу отправки?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Я сам нашел проблему. Мне нужно изменить роль "WORKER" в классе Worker на "ROLE_WORKER". Как это

@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
    return Arrays.asList(new SimpleGrantedAuthority("ROLE_WORKER"));
}

Кажется, я не могу упростить роль "ROLE_WORKER" до "WORKER" в классе Worker, но могу упростить ее в классе SecurityConfig.

0 голосов
/ 02 июля 2018
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {


    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.authorizeRequests().anyRequest().fullyAuthenticated()

                .antMatchers("/submit").hasRole("WORKER").and().formLogin().permitAll().and().logout().permitAll();

    }

    @Bean
    public UserDetailsService userDetailsService() {
        // ensure the passwords are encoded properly
        @SuppressWarnings("deprecation")
        UserBuilder users = User.withDefaultPasswordEncoder();
        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
        manager.createUser(users.username("me").password("me").roles("WORKER").build());
        return manager;
    }

}

Вы можете настроить еще больше с вашим собственным login page.

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