我创建了一个 Angular 应用程序,该应用程序公开了一个 RESTful API 并通过使用这篇文章作为参考来使用 spring 安全性(使用 LDAP),并且我设法让它工作。唯一的问题是,如果重新启动服务器应用程序(配置了 spring 安全性),所有用户都将注销,但如果用户让他们的浏览器页面保持打开状态,他们可以毫无问题地浏览屏幕,直到他们做一些会需要访问服务器。
所以我的问题是:有没有办法在检测到服务器重新启动时自动注销用户或重新验证他们(以及如何检测这样的事件)?
我创建了一个 Angular 应用程序,该应用程序公开了一个 RESTful API 并通过使用这篇文章作为参考来使用 spring 安全性(使用 LDAP),并且我设法让它工作。唯一的问题是,如果重新启动服务器应用程序(配置了 spring 安全性),所有用户都将注销,但如果用户让他们的浏览器页面保持打开状态,他们可以毫无问题地浏览屏幕,直到他们做一些会需要访问服务器。
所以我的问题是:有没有办法在检测到服务器重新启动时自动注销用户或重新验证他们(以及如何检测这样的事件)?
重新验证用户
你需要无状态/无会话 API,考虑使用基于令牌的身份验证,spring security OAuth 有这个。如果您确实需要会话,请将其保存在数据库而不是应用程序服务器上,spring session 有这个。
自动注销
简单的方法是,如果您尝试访问服务器并且它从服务器接收到 401 禁止,则将用户重定向到登录页面或弹出窗口登录。当服务器重新启动时,用户会自动注销,只是客户端/角度不知道它。
我设法通过实现本文所述的拦截器来解决这个问题。我还实施了一个$interval
以尽快检测到用户未经授权。