使用PassportJS中的LocalStrategy,似乎可以创建一种验证用户名和密码的机制;
这基本上是从文档推断的:
vec
现在,在我的A[i,j]=0
路由中,我正在调用k <- 4
n <- 10
vec <- c(seq(-k+1, -1), seq(1, k+1))
A <- matrix(0, n, n)
for (i in 1:n)
for (j in 1:n)
A[i,j] <- if((i - j) %% n in vec) 1
函数,该函数显然将运行在(n x n)
中创建的函数。
passport.use(new LocalStrategy({ username_email: 'username' }, async(username, password, done) => {
try {
var user = await UserModel.findOne({ username_email: username }).exec();
if (!user) {
return done(null, false, { message: 'Invalid username or password' })
}
var passwordOk = await user.comparePassword(password);
if (!passwordOk) {
return done(null, false, { message: 'Invalid username or password' })
}
return done(null, user)
} catch (err) {
return done(err)
}
}))
现在花点时间看一下我在/login
路线中所做的工作(我在这里使用快递验证程序)
passport.authenticate
在这里,我可以使用快速验证器和猫鼬来最终检查Local Strategy
以保存用户或退回用户,因为他们使用的是已经存在的电子邮件...
这很重要,因为如果提取失败,我需要在前端进行错误检查时使用该错误信息。
router.route('/login')
.post(passport.authenticate('local',
function(req, res) {
// If this function gets called, authentication was successful.
// `req.user` contains the authenticated user.
res.redirect('/users/' + req.user.username);
}), )
从本质上讲,我如何获取错误信息,以便将其发送到前端?
提前谢谢!