Похоже, вы используете пул, чтобы проверить статус входа в систему. Ваш метод управления
@RequestMapping(value = "/is_auth")
public boolean getAuth() {
return true;
}
никогда не вернется false
. Поэтому в общем случае нет необходимости иметь возвращаемое значение.
@ResponseStatus(value = HttpStatus.OK)
@RequestMapping(value = "/is_auth")
public void ping() {
// log ?
}
Я считаю, что лучшим решением будет WebSocket соединение между клиентом и сервером. Если затем реализовать SessionListener
, вы можете очень легко отправить состояние входа в соответствующем клиент, если его сеанс прибудет истекли:
//
// 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);
}
}
EDIT: здесь очень хороший пример того, как реализовать WebSockets с весной и JavaScript: Using WebSocket to build an interactive web application
Спасибо за ответ! @dit, я поддерживаю сеанс на стороне сервера, используя auth2 и SSO. Но проблема в том, что я не знаю, как поддерживать состояние аутентификации на интерфейсе. Не могли бы вы привести пример кода JS. –
@ Rudziankoŭ см. Мое редактирование. Пример действительно хорош. – dit