【问题标题】:Passport.js failure message is not appearingPassport.js 失败消息未出现
【发布时间】:2020-04-23 04:36:52
【问题描述】:

我有 passport.js 身份验证,它接受正确的凭据而不是不正确的凭据。

我正在尝试针对不正确的凭据显示弹出消息。

尝试了无数次尝试并按照文档进行操作,但无法使其正常工作。 里面似乎没有太多,但不能完全正确。

制定策略

var flash = require('connect-flash');

var app = express();
app.use(flash());

passport.use(new Strategy(
  function(username, password, cb) {
    db.users.findByUsername(username, function(err, user) {
      if (err) { return cb(err); }
      if (!user) { return cb(null, false, { message: 'Incorrect password.' } ); }
      if (user.password != password) { return cb(null, false, { message: 'Incorrect password.' }); }
      return cb(null, user);
    });
  }));

身份验证 - 发布和获取

//Log In Post request
app.post('/login.post',
  passport.authenticate('local', { successRedirect: '/home',
                                   failureRedirect: '/',
                                   failureFlash: 'Invalid log in, please try again' })
);


//Home route
app.get('/home', //Log in Home
  function(req, res) {
   res.render('home', { user: req.user });
 });

【问题讨论】:

    标签: node.js authentication heroku passport.js passport-local


    【解决方案1】:

    试试这个:

    // Login Process
    router.post("/login", (req, res, next) => {
      passport.authenticate("local", {
        successRedirect: "/",
        failureRedirect: "/auth/login",
    
        failureFlash: true
      })(req, res, next);
    });
    

    调用(req, res, next); 很重要,否则整个事情就会卡在那里。

    【讨论】:

    • 或者只是... router.post('/login', passport.authenticate('local', { successRedirect: '/', failureRedirect: '/auth/login', failureFlash: true }));
    【解决方案2】:

    可能是这样的?

    app.post('/login',
      passport.authenticate('local', { successRedirect: '/home',
                                       failureRedirect: '/login',
                                       failureFlash: true })
    );
    

    【讨论】:

    • 愚蠢的问题是var flash = require("connect-flash") 而不仅仅是require("flash")?
    • 是的,我有,不过谢谢!
    • req.flash("success", "Test sample"); 这样的简单测试有效吗?
    • 将其添加到我的 app.get 的主页(和其他页面)中,但它不起作用,没有错误但没有通知。
    • 查看这个 repo 以获得使用 LocalStrategy 和 flash github.com/Colt/yelp-camp-refactored的完整示例@
    猜你喜欢
    • 2015-06-22
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 2013-01-31
    相关资源
    最近更新 更多