Angular 2 身份验证 - 存储 passportjs 令牌以供使用



以下快速代码在将用户重定向到 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'));

最新更新