[英]How to change HttpSecurity without WebSecurityConfigurerAdapter
[英]How to use Spring HttpSecurity without formLogin
我有這樣的SecurityConfig:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private AuthProviderByIP authProvider;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception
{
auth.authenticationProvider(authProvider);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/public").permitAll()
.antMatchers("/private").hasRole("ADMIN")
.antMatchers("/**").permitAll();
}
}
和AuthProviderByIP像這樣:
@Component
public class AuthProviderByIP implements AuthenticationProvider {
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
// making own Authentication object
}
@Override
public boolean supports(Class<?> aClass) {
return true;
}
}
當我嘗試獲取/ public資源時,它工作正常,但是當嘗試獲取/ private資源時,它僅返回禁止頁面。 我用debug檢查過它,甚至沒有調用authenticate(...)方法。
谷歌搜索時只有HttpSecurity配置.formLogin()。and()。httpBasic()
但是我現在不需要formLogin。 如何不使用formLogin進行配置?
Spring Security將Authentication
對象存儲在SecurityContextHolder
。 如果您不希望表單登錄或基本身份驗證,請手動進行設置。 從文檔 :
Authentication request = new UsernamePasswordAuthenticationToken(name, password);
Authentication result = authenticationManager.authenticate(request);
SecurityContextHolder.getContext().setAuthentication(result);
您可以在HttpSecurity配置中禁用Form-Login和Basic-Auth:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
...
.httpBasic().disable()
.formLogin().disable();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.