【发布时间】:2018-03-21 18:51:18
【问题描述】:
我是 Angular 新手,正在为用户实施身份验证。
网络上的大多数建议都建议将会话/用户名保存在本地存储中,当用户返回应用程序时,检查本地存储以显示正确的导航(在我的导航栏中,我有不同的导航按钮用于私人和公共视图)。
但是,我发现这个解决方案有一些缺点。例如,如果服务器上的会话过期,或者手动添加了本地存储,那么当应用程序初始化时,它会在导航栏中显示错误的按钮。
在那之后,我找到了解决方案 - 在显示导航栏按钮之前使用服务,向服务器发送请求以验证本地存储中的用户及其会话当前是否处于活动状态。只有在那之后我才会显示导航按钮。
这里有一个问题:这是证明检查本地存储中的用户是否已登录并且会话是否处于活动状态的最有效方法吗?
还有另一种方法,我正在考虑,但没有找到解决方案。 由于我的角度 webapp 和 nodejs 服务器位于两个不同的位置,当请求 index.html 并使用预渲染的导航栏和响应时,webapp 是否可以检查身份验证状态(从 webapp 服务器向我的 nodejs 服务器发出请求)用户状态(登录或未登录)?
谢谢。
附:我在服务器端使用 PassportJS 和 Express。
【问题讨论】:
-
您可以使用 JWT 认证,这里不需要同步本地存储和服务器会话。 blog.angular-university.io/angular-jwt-authentication
标签: node.js angular authentication