登录坚持 MEAN 堆栈和护照谷歌策略

迈克尔·詹姆斯

我了解如何设置 Google 策略并且通常使用会话 cookie 完成它,但我的问题围绕着保持登录状态客户端。

如何使用会话 cookie 显示用户在客户端登录/注销?我应该isLoggedIn根据每个请求的结果设置一个变量吗?我应该简单地检查 cookie 是否存在并设置变量,还是应该有一个 API 来告诉我是否req.user不为空?

本尼迪克特·施密特

页面初始化时我做的第一件事是通过API请求请求当前登录的用户。此请求可能包含也可能不包含有效的会话令牌,我可以使用它在后端找到当前登录的用户。根据您的后端实现,这就像检查请求中是否存在 req.user 一样简单。在我的应用程序中,无论如何我都需要用户信息,因此当且仅当请求是由有效会话发出时,它们也会在此请求中传输。

通过这种方式,我目前只使用一个请求来检查用户是否已登录。此状态可以保存在应用程序范围的服务中,以便您可以在需要时使用此信息。仅检查前端的 cookie 可能是不够的。即使您在浏览器中设置了会话 cookie,也不意味着它对后端请求仍然有效。此信息只能由后端验证,因此您应该始终通过某种请求进行检查。

检查用户的角度初始化

我在 Angular 应用程序初始化时初始化用户的方法是使用 APP_INITIALIZER 作为依赖项。它在初始化过程中触发给定服务的特定功能。这样,当应用程序完成加载时,有关登录状态的信息就已经存在了。

export function startupServiceFactory(startupService: UserService): Function {
    return () => startupService.initUser();
}
@NgModule({
    imports: [...],
    providers: [..., { provide: APP_INITIALIZER, useFactory: startupServiceFactory, deps: [UserService], multi: true }, ...],
    declarations: [...],
    bootstrap: [AppComponent]
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章