Spring Security可以检测到当前会话与用户不一致

时间:2019-04-17 12:35:36

标签: session spring-security

我现在正在使用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中?

0 个答案:

没有答案