我现在正在使用Spring Security,我的Web应用程序中有这种情况:
第1步:使用用户A登录,并打开一个带有两个浏览器标签的页面
第2步:用户-在选项卡一中注销,而对选项卡二不做任何操作
第3步:以用户B身份登录,在标签一中打开同一页面(请注意,sessionId应该是用户B的身份)
第4步:在第二个标签页中发送ajax请求
我的配置如下:
@Configuration
@EnableWebSecurity
public class AuthConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/css/**", "/index").permitAll()
.antMatchers("/user/**").hasRole("USER")
.and()
.formLogin()
.loginPage("/login").failureUrl("/login-error");
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user1").password("pass").roles("USER")
.and()
.withUser("user2").password("pass").roles("USER");
}
}
/登录:登录页面网址
/用户/索引:公司页面网址
预期结果是,此请求int步骤4应该被后端阻止(例如返回401),提醒他重新登录。
但是实际结果是:该请求连同用户B的数据一起返回。
那么如何通过Spring Security实现预期的结果?
似乎这个问题可能与Spring Security并不完全相关,我将这个问题更新为一个更一般的问题: 如何在步骤4中达到预期效果?是否需要将会话信息保存在会话存储或html中?