当我使用基本身份验证向RESTful API请求时,如何防止/避免会话创建?
我的应用程序的前端需要会话,但是其他一些应用程序则通过RESTful API与之通信。在那种情况下,我需要阻止创建会话,因为我的应用程序具有一个会话管理,每个用户限制1个会话。
我今天的问题是,这另一个应用程序使活动的浏览器会话无效,因为另一个应用程序使用的是浏览器使用的同一用户。
答案 0 :(得分:0)
经过一番研究,我发现了solution using Multiple HttpSecurity configurations。我创建了2个安全配置。
仅当存在特定的HEADER且在此配置下,会话管理为 STATELESS :
时,才应用我的主要数据库 @Override
protected void configure(HttpSecurity http) throws Exception {
//@formatter:off
http.requestMatcher(new RequestMatcher() {
@Override
public boolean matches(HttpServletRequest request) {
return request.getHeader(CheckVersionAspect.ESB_VERSION_HEADER) != null ||
request.getHeader(CheckVersionAspect.PDV_VERSION_HEADER) != null;
}
}).authorizeRequests()
.anyRequest().authenticated()
.and()
.httpBasic()
.and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
//@formatter:on
}
第二种配置继续进行会话管理,以限制每个用户1个会话。
贷记this answer。