我开始学习node / express js,并且我使用passport
创建了一个登录系统,但是我想在我的系统中创建member page
只能为已经登录的用户访问,之后一些研究我找到了答案here,并且使用isAuthenticated()
&#34非常容易;这在文档"中没有提到。 ,
但是其实我不明白它是如何工作的,程序如何知道用户是否已登录!如果有人能为我清除这件事,我感激不尽
答案 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中的注释,因为它通常描述了工作原理。