我正在设置一个新服务器,所以我要配置服务器以允许某些URL无需身份验证就可以访问时,我遇到了问题。 除了/ oauth / authorize以外,其他所有程序都工作正常,因为在上一个操作中,输入凭据时,页面未重定向,并且停留在同一页面上。
我尝试的代码如下,该代码无需任何身份验证即可访问URL,但/ oauth / authorize重定向不起作用
@Configuration
@EnableResourceServer
public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/oauth/token", "/oauth/authorize**", "/login**", "/user/recover_password", "/user/register").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.logout().logoutUrl("/oauth/logout")
.and()
.csrf().disable();
}
}
因此,正如我所说,我需要访问此URL而不进行身份验证,并且还必须能够在/ oauth / authorize上进行重定向,以便能够使用一些外部资源进行登录。但是我得到的是,当我输入凭据时,页面仍停留在同一页面上。
答案 0 :(得分:0)
好的,最后我找到了修复程序,现在可以正常工作了,添加了sessionManagement,尽管我不知道为什么。
我添加了以下代码:
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
.and()
因此,完整的方法应如下所示:
public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
.and()
.authorizeRequests()
.antMatchers("/oauth/token", "/oauth/authorize**", "/login**", "/user/recover_password", "/user/register").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.logout().logoutUrl("/oauth/logout")
.and()
.csrf().disable();
}
}
现在,/ oauth / authorize可以正常工作,并且无需身份验证即可访问我的公共URL。
所以,现在,如果任何人都可以解释sessionManagement的功能,那就很好了。