使用PassportJS以HTML格式而不是EJS格式化连接Flash消息

时间:2016-02-16 19:49:08

标签: javascript html express passport.js ejs

所以我一直在尝试使用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的。

对于这件事我很高兴,谢谢!

0 个答案:

没有答案