DaoAuthenticationProvider не вызывается - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь подтвердить подлинность запроса с использованием Spring Security, я просмотрел несколько блогов и видео, но не могу решить проблемы. Конфигурация безопасности загружена, но мои запросы не проходят проверку подлинности. Я получаю ошибку 403

Класс EJB в WebSecurityConfigureAdapter

    public DaoAuthenticationProvider authenticationProvider() {
        DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
        authProvider.setUserDetailsService(userService);
        System.out.println(userDetailsService());
        return authProvider; 
    }

метод настройки верховой езды

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
        .authorizeRequests().antMatchers("/products","/orders").hasAnyRole("admin");//.authenticated(); 

    }
user details services overridding loadUserByUsername  
@Override
public UserDetails loadUserByUsername(String loginName) {

        String authenticated = "false";

        UserDetails userDetails = null;
        List<Users> usersList = usersRepository.findByLoginName(loginName);
        if(usersList.size()==0) {
            return null;
        }else {

            for (Users users : usersList) {
                List<Roles> rolesList = users.getRoles();
                for (Roles roles : rolesList) {

                    if(roles.getUserRole().equalsIgnoreCase("admin")) {
                        authenticated = "admin"; 
                        GrantedAuthority authority = new SimpleGrantedAuthority(authenticated);
                        User user = new User(users.getLoginName(),users.getPassword(),Arrays.asList(authority));
                        userDetails = (UserDetails)user; 
                    }       
                }
            }
            return userDetails;
        }

с использованием почтальона, устанавливающего учетные данные в качестве basicAuth, ошибка выдачи 403

1 Ответ

0 голосов
/ 23 апреля 2019

проблема была в том, что ... нам нужно либо установить значение для различных геттеров в классе userdetails, либо явно установить значение true. Нижеприведенные геттеры явно установили его в значение true, у меня это сработало

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return true;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...