isAuthenticated() 到底是如何工作的?

Ash*_*raf 2 authentication node.js express passport.js

我开始学习node/express js,并且我使用创建了一个登录系统passport,但是我想member page在我的系统中创建一个仅可供已登录的用户访问的系统,经过一番研究后我在这里找到了答案,并且使用起来非常简单isAuthenticated()“文档中没有很好地提到这一点”,

实际上我不明白它是如何工作的,程序如何知道用户是否登录!,如果有人能为我解决这个问题,我非常感激

jfr*_*d00 5

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

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

而且,正如人们在Github 存储库中的源代码中看到的那样,它只是检查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;
};
Run Code Online (Sandbox Code Playgroud)

有关更多说明,请参阅此处护照代码中的注释,因为它一般描述了事物的工作原理。