以下快速代码在将用户重定向到 facebook 进行登录然后创建用户、将它们存储在我的数据库中并重定向到/auth/facebook/callback 后返回一个令牌。如何使用回调/承诺/可观察量/获取此令牌?在我的前端客户端中,并将其作为用户浏览器中的局部窗口变量存储在 Angular 2 身份验证服务中,以便在会话期间使用?
userRouter.get('/auth/facebook/callback', function(req,res,next){
passport.authenticate('facebook', function(err, user, info) {
if (err) {
return next(err);
}
if (!user) {
return res.status(401).json({
err: info
});
}
req.logIn(user, function(err) {
if (err) {
return res.status(500).json({
err: 'Login failed'
});
}
var token = Verify.getToken(user);
res.status(200).json({
status: 'Login successful',
success: true,
token: token
});
});
})(req,res,next);
});
如果不使用
ngrx store,我建议直接使用 localStorage。
要设置:
localStorage.setItem('token', this.token);
要获得:
localStorage.getItem('token');
要删除:
localStorage.removeItem('token');
这应该可以帮助您入门:
login(something: string): Observable<boolean> {
return this.http
.post(this.authUrl, JSON.stringify({ }), { headers: this.headers })
.map((response: Response) => {
let responseObject = response.json();
let token = responseObject.token;
localStorage.setItem('token', JSON.stringify({ token: this.token}));
return true;
});
}
如果像我的示例一样将 JSON 对象保存在本地存储中,则需要解析它:
JSON.parse(localStorage.getItem('token'));