spring - 在spring mvc中处理同一浏览器中的不同用户会话
问题描述
我有一个 spring mvc 应用程序,管理员可以在其中创建和更新用户信息,并在同一个浏览器中打开他们各自的用户窗口。但是,当管理员在一个选项卡中打开一个用户会话,然后尝试在另一个选项卡中打开另一个用户会话时,它会给出错误,指出一个活动会话已经存在。我们如何使管理员能够在同一个浏览器和不同的选项卡中与不同的用户一起玩他们各自的会话?有什么方法可以处理这些会话
解决方案
我认为当用户打开会话网络应用程序时,例如为窗口对象提供一些 id 活动浏览器选项卡$window.name = "cliendId"
当用户登录时,您的 Spring 应用程序会通过 Web 发送此窗口 ID,并使用 Spring Security 进行处理
public class CustomWebAuthenticationDetails extends WebAuthenticationDetails {
private final Logger log = LoggerFactory.getLogger(CustomWebAuthenticationDetails.class);
private final String clientid;
CustomWebAuthenticationDetails(final HttpServletRequest request) {
super(request);
clientid = request.getHeader("clientid");
log.debug("User Agent {}", request.getHeader("User-Agent"));
}
public String getClientid() {
return clientid;
}
}
并配置
@Component
public class CustomWebAuthenticationDetailsSource implements AuthenticationDetailsSource<HttpServletRequest, WebAuthenticationDetails> {
@Override
public WebAuthenticationDetails buildDetails(final HttpServletRequest context) {
return new CustomWebAuthenticationDetails(context);
}
}
现在按用户管理或列出此会话 ID,当用户打开新会话时,相同的选项卡警报或终止会话,并编写自己的安全过滤器并实施安全过滤器链管理每个请求
推荐阅读
- function - 如何在 CSound 中创建函数?
- filter - 在 PowerQuery (PowerBI) 中筛选日期
- go - GO:cors - Http Status 503 - 请求的资源上不存在“Access-Control-Allow-Origin”标头
- python - 从 Networkx 中的 betweenness_centrality 传递参数
- java - 如何在 Spark 2.4 中加载自定义转换器
- javascript - OpenLayer 将图标添加到特定位置和特定维度的地图
- python - .append() 后唯一数据不再唯一
- node.js - 如何为授权用户验证每个 API?
- reporting-services - 报告未显示所有数据且未分页
- symfony - Symfony 框架项目服务器回调/错误样式