gpt4 book ai didi

node.js - Angular 2 (4/5) 检查用户是否经过身份验证,最佳实践

转载 作者:太空宇宙 更新时间:2023-11-04 01:56:46 25 4
gpt4 key购买 nike

我是 Angular 的新手,正在为用户实现身份验证。

网络上的大多数建议都建议将 session /用户名保存在本地存储中,当用户返回应用程序时,检查本地存储以显示正确的导航(在我的导航栏中,我有不同的导航按钮用于私有(private)和公共(public) View )。

但是,我发现这个解决方案有一些缺点。例如,如果服务器上的 session 过期,或者手动添加本地存储,那么当应用程序初始化时,它将在导航栏中显示错误的按钮。

之后我找到了解决方案 - 在显示导航栏按钮之前使用服务,向服务器发送请求以验证本地存储中的用户及其 session 当前是否处于事件状态。只有在那之后我才会显示导航按钮。

这里有一个问题:这是证明检查本地存储中的用户是否已登录并且 session 是否处于事件状态的最有效方法?

还有一个办法,我也想过,但没找到解决办法。由于我的 Angular Web 应用程序和 NodeJS 服务器位于两个不同的位置,因此当请求 Index.html 时,Web 应用程序是否可以检查身份验证状态(从 Web 应用程序服务器向我的 NodeJS 服务器发出请求)并以预渲染的导航栏和用户状态(是否登录)进行响应?

谢谢。

附注我在服务器端使用 PassportJS 和 Express。

最佳答案

最佳实践是使用 AuthGuard 并实现 CanActivate 来检查用户是否可以查看应用程序的特定部分。通常还使用身份验证服务来让用户登录系统并获取访问 token 。

然后,此访问 token 将用作对服务器的每个请求的Authorization-Header(这是它们同步的位置)。

您需要在加载时检查JWT/或任何其他类型 token ,其中包含用户信息和 session 超时。

如果 token 无效,您只需将用户重定向到登录,否则将允许用户前往他们想去的地方。

一个实际的例子可以找到here .

关于node.js - Angular 2 (4/5) 检查用户是否经过身份验证,最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47662740/

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