【发布时间】:2019-08-12 06:20:06
【问题描述】:
我有点新节点。最近我决定创建一个博客系统,它有一个由护照模块和本地策略创建的授权系统。 我使用护照文件和一些视频教程来设计它,但我不明白它是如何工作的,我不明白其中的逻辑。 我有一个登录表单,它有两个字段(用户名、密码)和一个提交按钮。 你可以在这里看到我的 login.jade 代码。它是用玉模板语言编写的,并使用语义 UI(类似于引导程序)。
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.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);
}
现在我不明白本地策略是如何工作的。它如何理解我的登录表单中的哪个字段用于用户名,哪个字段用于密码?它只接受两个参数(用户名、密码),但我不知道它如何指定这些参数来自哪里以及它如何理解这些必须是我的登录表单凭据。 如果有人向我解释这里发生了什么,我将非常感激。
【问题讨论】:
标签: node.js passport.js passport-local