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

问题描述 投票:0回答:1

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

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

node.js express authentication passport.js passport-google-oauth
1个回答
0
投票

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

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

检查角度初始化的用户

我在初始化角度应用程序初始化时执行的操作是使用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]
})
© www.soinside.com 2019 - 2024. All rights reserved.