在护照js,基本策略中,以下代码示例提供了验证用户身份的功能。
passport.use(new BasicStrategy(
function(userid, password, done) {
User.findOne({ username: userid }, function (err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false); }
if (!user.verifyPassword(password)) { return done(null, false); }
return done(null, user);
});
}
));
问题是Sails应用程序中的哪个(哪个文件)应该放置此代码?我想同样适用于自定义验证功能吗?
答案 0 :(得分:0)
然后编写代码以使护照处理登录过程
login: function(req, res) {
passport.authenticate('local', function(err, user, info) {
if ((err) || (!user)) {
return res.send({
message: info.message,
user: user
});
}
req.logIn(user, function(err) {
if (err) res.send(err);
return res.send({
message: info.message,
user: user
});
});
})(req, res);
此行passport.authenticate('local'
将从config.js中的passport.js读取配置,如下所示: -
passport.use(new LocalStrategy({ usernameField:' email', passwordField:'密码' }, 功能(电子邮件,密码,完成){
User.findOne({ email: email }, function (err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect email.' });
}
bcrypt.compare(password, user.password, function (err, res) {
if (!res)
return done(null, false, {
message: 'Invalid Password'
});
var returnUser = {
email: user.email,
createdAt: user.createdAt,
id: user.id
};
return done(null, returnUser, {
message: 'Logged In Successfully'
});
});
});
将这些行添加到route.js中: - 'post /login': 'AuthController.login'