所以我一直在尝试使用PassportJS实现本地身份验证的一些基本示例,并且我成功构建了一个工作版本。但是,我没有使用EJS作为我的模板,而是希望将我的页面保持在纯HTML中。在尝试弄清楚如何以HTML格式访问我的connect-flash消息时,我陷入困境。
路线片段:
app.post('/login', passport.authenticate('local-login', {
successRedirect : '/profile', section
failureRedirect : '/login', /
failureFlash : true
}));
护照策略:
passport.use('local-login', new LocalStrategy({
usernameField : 'email',
passwordField : 'password',
passReqToCallback : true
},
function(req, email, password, done) {
User.findOne({ 'local.email' : email }, function(err, user) {
if (err)
return done(err);
if (!user)
return done(null, false, req.flash('loginMessage', 'No user found.'));
if (!user.validPassword(password))
return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.'));
return done(null, user);
});
}));
可以正确加载Flash消息的EJS片段:
<body>
<div class="container">
<div class="col-sm-6 col-sm-offset-3">
<h1><span class="fa fa-sign-in"></span> Signup</h1>
<!-- show any messages that come back with authentication -->
<% if (message.length > 0) { %>
<div class="alert alert-danger"><%= message %></div>
<% } %>
<!-- LOGIN FORM -->
<form action="/signup" method="post">
<div class="form-group">
<label>Email</label>
<input type="text" class="form-control" name="email">
</div>
<div class="form-group">
<label>Password</label>
<input type="password" class="form-control" name="password">
</div>
<button type="submit" class="btn btn-warning btn-lg">Signup</button>
</form>
基本上,我想知道如何访问&lt;%= message%&gt;使用纯HTML / js的对象......如果可能的话?我不确定如何为此分配一个变量,因为我不太明白它在渲染时是如何传递给.ejs的。
对于这件事我很高兴,谢谢!