0
私はより良いアーキテクチャのソリューションを探しています。現在のところ、次のエンドポイントがあります。春のセキュリティ:isAutaxicated Ajaxを使用して
このエンドポイントはSpring Securityの対象となり、認証されたユーザーのみがアクセスできます。
フロントエンドにユーザ認証状態を知らせるベストプラクティスは何ですか?
私はより良いアーキテクチャのソリューションを探しています。現在のところ、次のエンドポイントがあります。春のセキュリティ:isAutaxicated Ajaxを使用して
このエンドポイントはSpring Securityの対象となり、認証されたユーザーのみがアクセスできます。
フロントエンドにユーザ認証状態を知らせるベストプラクティスは何ですか?
プーリングを使用してログインステータスを確認しているようです。あなたのコントローラーの方法
@RequestMapping(value = "/is_auth")
public boolean getAuth() {
return true;
}
false
を返すことはありません。したがって、一般的に、この場合には戻り値を持つ必要はありません。
@ResponseStatus(value = HttpStatus.OK)
@RequestMapping(value = "/is_auth")
public void ping() {
// log ?
}
私は最善の解決策は、クライアントとサーバ間ののWebSocket接続可能と考えています。
//
// 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:ここに春とJavaScriptでのWebSocketを実装する方法は非常に良い例です:Using WebSocket to build an interactive web application
をあなたがSessionListener
を実装する場合は、彼のセッションの取得の期限が切れた場合、あなたは非常に簡単にクライアントに対応するには、ログイン状態を送信することができます
お返事ありがとうございます! @dit、私はauth2とSSOを使用してサーバー側でセッションを維持します。しかし、問題はフロントエンドでの認証状態の維持方法がわかりません。 JSコードの例を提供してください。 –
@Rudziankoŭ私の編集を参照してください。この例は本当に良いです。 – dit