Это идеальное решение для ваших требований
@Override
protected void configure(HttpSecurity http) throws Exception
{
http
.requestMatchers().antMatchers("/test/**", "/customLoginPage", "/logout").and()
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/customLoginPage") //If you don't configure default is "/login"
.usernameParameter("userName").passwordParameter("password") //In case of custom form parameters
.defaultSuccessUrl("/app/user/dashboard") //If you don't configure default is "/"
.failureUrl("/login?error=true") //If you don't configure default is "/login?error"
.and().csrf().disable();
}
Позвольте мне объяснить некоторые случаи, как пружинная безопасность имеет дело с
Случай 1:
http.authorizeRequests()
равно
http.antMatcher("/**").authorizeRequests()
Будет определен прокси-фильтр, а URL-шаблон для этого фильтра будет "/**"
. С этим типом конфигурации проблем не будет, так как это подстановочный знак. Но в некоторых случаях мы не хотим определять подстановочный знак "/**"
, тогда мы должны правильно настроить requestMatchers, в противном случае у нас возникнет множество неосуществимых проблем.
Случай 2:
http.antMatcher("/test/**").authorizeRequests()
Здесь прокси-фильтр будет добавлен с шаблоном URL "/test/**"
, и запросы с / login и / logout не могут проходить через добавленный фильтр. Чтобы преодолеть это, следует использовать .requestMatchers (), как указано ниже
http
.requestMatchers().antMatchers("/test/**", "/customLoginPage", "/logout")
.and().authorizeRequests()
Это означает, что фильтр с отображением фильтра приведен ниже
<filter-mapping>
<filter-name>/test/**</filter-name>
<url-pattern>/customLoginPage</url-pattern>
<url-pattern>/logout</url-pattern>
</filter-mapping>
Вы можете попробовать некоторые из основных примеров (Работа) из моего репозитория github