我已经使用mongo db作为后端创建了一个spring boot项目。我想要确保用户在进行身份验证和授权时能够维护一定的内存会话(使用redis或Spring Session内置的某些功能)。
我已经阅读了很多教程,例如这个,这个,这个等等。
所有这些教程都要求您扩展
所有这些教程都要求您扩展
WebSecurityConfigAdapter
,配置HttpSecurity
并提供UserDetailService
。我按以下方式完成了这些操作。@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
public UserDetailsService userDetailsService(){
return new StockUserDetailService();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/login/**").permitAll()
.antMatchers("/logout/**").permitAll()
.antMatchers("/admin/**").hasAuthority("ADMIN")
.antMatchers("/broker/**").hasAnyAuthority("BROKER")
.anyRequest().fullyAuthenticated();
}
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService());
}
}
但是我不明白的是会话管理发生在哪里,用户应该使用什么url
进行登录?如果我编写一个映射到/login
的控制器,那么我的登录控制器中的操作应该是什么。我真的没有完整的图片。
更新
我尝试发布到/login
。 我得到这个错误
{
"timestamp": 1494842451672,
"status": 403,
"error": "Forbidden",
"message": "Could not verify the provided CSRF token because your session was not found.",
"path": "/login"
}
.csrf().disable()
在您的安全配置中禁用它。 - balag3