Поставщик настраиваемого входа и настраиваемой аутентификации Spring Security - PullRequest
1 голос
/ 10 апреля 2019

Я создаю проект с пружинной защитой для входа в систему, это часть моего проекта, я хочу использовать пользовательскую страницу входа в систему и провайдера нестандартной аутентификации. Я искал учебники, но я закончил на странице показа нестандартной авторизации. вверх, но пользователь не может войти в систему (доступ запрещен) вместо этого получил в трассировке стека, вот мой код, я предпочитаю полную конфигурацию Java.

это мой класс конфигурации безопасности

@Configuration
@EnableWebSecurity
@ComponentScan("id.config.configPack")
public class SecurityConfig extends WebSecurityConfigurerAdapter{


 @Autowired
    private CustomAuthenticationProvider authProvider;

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

@Override
public void configure(HttpSecurity http) throws Exception {
         http.csrf().disable();
         http
            .authorizeRequests()
                .antMatchers("/resources/**").permitAll()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/login")
                .defaultSuccessUrl("/menu")
                .permitAll()
                .and()
            .logout()                                    
                .permitAll();

}

}

это для инициализации проекта

public class SecurityWebApplicationInitializer extends 
AbstractSecurityWebApplicationInitializer {

public SecurityWebApplicationInitializer() {
    super(SecurityConfig.class);
}
}

это мой пользовательский поставщик аутентификации

@Component
public class CustomAuthenticationProvider implements AuthenticationProvider {

@Override
public Authentication authenticate(Authentication authentication) 
  throws AuthenticationException {

    String user = authentication.getName();
    String password = authentication.getCredentials().toString();
    List<GrantedAuthority> grantedAuths = new ArrayList<>();
    grantedAuths.add(new SimpleGrantedAuthority("ROLE_USER"));
    if (user.equalsIgnoreCase("test") && password.equals("test")) {        
        return new UsernamePasswordAuthenticationToken
                (user, password, grantedAuths);
    } else {
        throw new BadCredentialsException("Authentication failed");
    }

}

@Override
public boolean supports(Class<?> authentication) {
    return authentication.equals(
      UsernamePasswordAuthenticationToken.class);
}
}

это моя страница входа в систему, я не указал действие, потому что, насколько я знаю, Spring Security берет это под контроль, CMIW.

<form id="loginForm" class="login-form">
    <input name="username" type="text" placeholder="Username" />
    <input name="password" type="password" placeholder="Password" />
    <button type="submit">Submit</button>
    <br />
    <br />
    <span id="err" class="errMsg"></span>
</form>

Я также определил класс контроллера для страницы входа и для успешной страницы входа.

мой ожидаемый результат - я могу войти в систему и перенаправить на обработчик успеха входа по умолчанию в моей конфигурации безопасности, есть ли какой-нибудь код, который отсутствует или требуется? Спасибо

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