节点js

时间:2015-09-27 05:35:46

标签: node.js

我想要一个用户输入用户名和密码的登录页面,如果匹配则登录成功,否则我想显示flash消息。 我已经尝试了很多不同的方法来做到这一点,但无法找到正确的方法。

router.get('/login', function (req, res) {
    res.render('login', {
        layout: 'layouts/main/subpages',
        topimagetype: 'home',
        title: 'Log In',
        message: req.flash('loginMessage')
    });
});

1 个答案:

答案 0 :(得分:0)

使用非常简单易用的连接闪光灯。 通过npm安装connect-flash。 在这里,我举例说明它可能适合你。

index.js //路由器

router.get('/login', function (req, res) {
   res.render('login', { 
     layout: 'layouts/main/subpages',
     topimagetype: 'home',
     title: 'Log In',
     message: req.flash('loginMessage')
     });
   });

Passport.js //配置文件

passport.use('local-login', new LocalStrategy({
   usernameField: 'email',
   passwordField: 'password',
   passReqToCallback: true 
   }, 
   function (req, email, password, done) {
     pool.getConnection(function (err, connection) {
        connection.query("SELECT * FROM user WHERE user_name = '" + email + "'", function (err, rows) {
          if (err)
          return done(err);
            if (!rows.length) {
                return done(null, false, req.flash('loginMessage', 'No user found.'));
            }
           if (!(passwordHash.verify(password, rows[0].password)))
           return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.'));
           var userType={};
           userType.super=false;
           userType.admin=false;
           userType.normal=false;
           if (rows[0].Roll_id == 1) {
             userType.super=true;
             } else if (rows[0].Roll_id == 2) {
            userType.admin=true;
             }
             else {
              userType.normal=true;
             }

            rows[0].type=userType;
            rows[0].created_date = rows[0].created_date.toDateString();
            return done(null, rows[0]);
         });
      });
  }));

Html View

<div class="login">
  <div class="login-screen">
    <div class="container">
    {{#message}}
    <div style="margin-left: 35%; width: 30%;">
    <div class="alert alert-danger">{{ message }}</div>
   </div>
    {{/message}}
   <section class="main">
     <form action="/login" method="post" role="form" class="form-1">
       <p class="field">
         <input type="text" name="email" placeholder="email" id="login-name">
            <i class="icon-user icon-large"></i>
        </p>
        <p class="field">
        <input type="password" name="password" placeholder="password" id="login-pass">
           <i class="icon-lock icon-large"></i>
         </p>
         <p class="submit">
         <button type="submit" name="submit"><i class="icon-arrow-right icon-large"></i></button>
         </p>
      </form>
    </section>
  </div>