gpt4 book ai didi

node.js - isAuthenticated() 到底是如何工作的?

转载 作者:行者123 更新时间:2023-12-02 20:37:44 26 4
gpt4 key购买 nike

我开始学习node/express js,并且我使用passport制作了一个登录系统,但是我想在我的系统中制作一个成员(member)页面只能供已经登录的用户,经过一番研究我找到了答案here ,并且使用 isAuthenticated() 非常简单,“文档中没有很好地提到这一点”,

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

最佳答案

好吧,您没有显示任何代码,因此我们并不真正知道您的网站在做什么,但大概初始身份验证步骤为该浏览器设置了一个加密的 session cookie,因此每当该浏览器在不久的将来发出请求时,服务器可以测试该请求中是否存在适当的 session 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;
};

更多说明请参阅 Passport 代码 here 中的注释因为它一般性地描述了事物是如何运作的。

关于node.js - isAuthenticated() 到底是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46695107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com