gpt4 book ai didi

node.js - 理解 Passport 本地策略功能nodejs的问题

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:25 24 4
gpt4 key购买 nike

我对 Node 有点陌生。最近我决定创建一个博客系统,它有一个由 Passport 模块和本地策略创建的授权系统。我使用 Passport 文档和一些视频教程来设计它,但我不明白它是如何工作的,我不明白其中的逻辑。我有一个登录表单,其中有两个字段(用户名,密码)和一个提交按钮。你可以在这里看到我的login.jade代码。它是用jade模板语言编写的,并使用语义UI(类似于bootstrap)。

  form.ui.form(method="POST",action="")
div.field
label Username
div.ui.left.icon.input
i.user.icon
input(type="text",name="username",placeholder="username")
div.field
label Password
div.ui.left.icon.input
i.lock.icon
input(type="password",name="password",placeholder="password")
button.ui.primary.button(type="submit") log-in

这是我的 Passport 本地策略

passport.use(new localStrategy(function(username,password,done){
User.checkUserName(username,function(err,user){
if (err) throw err;
if (!user) {
console.log('unknown user');
return done(null,false,{message:'user not found'});
}
if(user.password!=password){
return done(null,false , {message : 'password is wrong'});
}
return done (null,user);
});
}));

checkUserName 是我的模型 (user.js) 中的一个函数,它在数据库中查找用户名。

module.exports.checkUserName= function(username,callback){
User.findOne({username:username},callback);
}

现在我不明白本地策略是如何工作的。它如何理解我的登录表单中的哪个字段用于用户名,哪个字段用于密码?它只接受两个参数(用户名、密码),但我不知道它如何指定这些参数的来源以及它如何理解这些参数必须是我的登录表单凭据。如果有人向我解释这里发生了什么,我将非常感激。

最佳答案

如果您使用用户名/密码身份验证,则默认情况下 localStrategy() 使用带有 name="username"name="password" 的输入字段。所以,你的表格是正确的。

如果您想使用其他字段名称,可以更改默认值。读这个。 http://www.passportjs.org/docs/username-password/#parameters

我想指出,您应该对密码使用哈希方案,而不是将它们以纯文本形式存储在数据库中。因为,Ashley Madison .

This是一个精心设计的鲁棒哈希方案。还有其他的。

关于node.js - 理解 Passport 本地策略功能nodejs的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55279686/

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