Я не могу правильно добавить UserDetailsService в SpringSecurity - PullRequest
0 голосов
/ 15 октября 2018

У меня есть form для входа на мой spring boot сервер:

<form class="form" action="/j_spring_security_check" method="post">
      <div class="form-group">
           <label for="username" class="text-white">Username</label><br>
           <input type="text" name="username" id="username" class="form-control">
            </div>
            <div class="form-group">
            <label for="password" class="text-white">Password:</label><br>
            <input type="text" name="password" id="password" class="form-control">
            </div>
            <div class="form-group">
            <input type="submit" name="submit" class="btn btn-info btn-md" value="Enter">
       </div>
  </form>

Это моя Spring security конфигурация:

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    private final AdminDetailService adminDetailService;

    public SecurityConfig(AdminDetailService adminDetailService) {
        this.adminDetailService = adminDetailService;
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .antMatcher("/home/**")
                .authorizeRequests()
                .anyRequest()
                .hasRole("ADMIN")
                .and()
                .formLogin()
                .usernameParameter("username")
                .loginPage("/home/login").permitAll()
                .loginProcessingUrl("/j_spring_security_check")
                .defaultSuccessUrl("/home", true)
                .and()
                .logout()
                .logoutRequestMatcher(new AntPathRequestMatcher("/home/logout", "GET")).permitAll()
                .and()
                .rememberMe()
                .key("f@fdgdf543$cefdcF")
                .and().csrf().disable();
    }

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

}

И у меня есть мой пользовательский UserDetailsService:

@Service
public class AdminDetailService implements UserDetailsService {

    private final UserService userService;

    public AdminDetailService(UserService userService) {
        this.userService = userService;
    }

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        User user = userService.findByUsername(username);
        if (user == null) throw new UsernameNotFoundException(String.format("User with username [%s] not found.", username));

        return new AuthUser(user.getLogin(), user.getPassword());
    }
}

Я жду следующей логики:

  1. Я открываю веб-страницу из не авторизованного состояния

  2. Spring Securityперенаправить меня на страницу входа, где я ввожу имя пользователя и пароль

  3. Я нажимаю кнопку Enter, и я должен войти в AdminDetailService's метод loadUserByUsername

  4. В этом методе я проверяю данные пользователя в БД, и если все в порядке - возвращаю Spring Security UserDetail и перенаправляю на страницу успеха

Но когда я нажимаю Enter в 3 шага, я не вхожу в AdminDetailService's метод loadUserByUsername.Я не понимаю, что я пропустил и не работает loadUserByUsername.Я все это делал давно и проблем не было, но сейчас что-то забыл

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