gpt4 book ai didi

java - Spring 安全: isAuthenticated using Ajax

转载 作者:行者123 更新时间:2023-12-01 09:11:19 24 4
gpt4 key购买 nike

我正在寻找更好的架构解决方案。目前我们有以下端点:

/**
* Endpoint for frontend to be sure we are logged in
*/
@RequestMapping(value = "/is_auth")
public boolean getAuth() {
return true;
}

此端点由 Spring Security 覆盖,只有经过身份验证的用户才能访问它。

让前端了解用户身份验证状态的最佳实践是什么?

最佳答案

您似乎正在使用池来检查登录状态。你的 Controller 方法

@RequestMapping(value = "/is_auth")
public boolean getAuth() {
return true;
}

永远不会返回false。所以一般来说这种情况下不需要有返回值。

@ResponseStatus(value = HttpStatus.OK)
@RequestMapping(value = "/is_auth")
public void ping() {
// log ?
}

我相信最好的解决方案是客户端和服务器之间的websocket连接。如果您随后实现一个SessionListener,如果 session 过期,您可以很容易地将登录状态发送到相应的客户端:

//
// pseudo code
//
@Component
public class SessionListener implements HttpSessionListener {

private static final Logger logger = LoggerFactory.getLogger(SessionListener.class);

@Autowired
private IWebsocketService websocketService; // you own service here

@Override
public void sessionCreated(HttpSessionEvent se) {
logger.debug("sessionCreated: {}", se.getSession().getId());

}

@Override
public void sessionDestroyed(HttpSessionEvent se) {
String sessionId = se.getSession().getId();
logger.debug("sessionDestroyed: {}", sessionId);

websocketService.sendLoginStatus(sessionId, false);
}

}

编辑:这是一个很好的例子,如何使用 spring 和 javascript 实现 websockets:Using WebSocket to build an interactive web application

关于java - Spring 安全: isAuthenticated using Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40906784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com