Howheutnticated()真的有效吗?

时间:2017-10-11 18:23:46

标签: node.js express authentication passport.js

我开始学习node / express js,并且我使用passport创建了一个登录系统,但是我想在我的系统中创建member page只能为已经登录的用户访问,之后一些研究我找到了答案here,并且使用isAuthenticated()&#34非常容易;这在文档"中没有提到。 ,

但是其实我不明白它是如何工作的,程序如何知道用户是否已登录!如果有人能为我清除这件事,我感激不尽

1 个答案:

答案 0 :(得分:1)

好吧,您没有显示任何代码,因此我们并不真正了解您的网站正在做什么,但可能初始身份验证步骤会为该浏览器设置加密会话Cookie,以便每当该浏览器在不久的将来发出请求时,服务器可以测试以查看该请求上是否存在适当的会话cookie。如果是,则登录该浏览器。这通常是“登录”在浏览器中的工作方式。

因此,isAuthenticated()检查请求中是否存在所需的cookie。根据代码的详细信息,某些中间件可能已经预先检查了cookie,并在请求上设置了一个属性,指示它是否经过身份验证,而isAuthenticated()只是检查以前计算的属性。

而且,正如人们在the source code in the Github repository中看到的那样,只是检查请求中是否已存在user属性,这意味着一些先前的中间件已经检查了与此请求关联的cookie,确定它代表一个有效的用户。

req.isAuthenticated = function() {
  var property = 'user';
  if (this._passport && this._passport.instance) {
    property = this._passport.instance._userProperty || 'user';
  }

  return (this[property]) ? true : false;
};

有关详细说明,请参阅护照代码here中的注释,因为它通常描述了工作原理。