代码之家  ›  专栏  ›  技术社区  ›  Rockink

如何在身份验证后将用户重定向回同一页面?

  •  0
  • Rockink  · 技术社区  · 9 年前

    我对整个节点这件事很陌生,密码很有趣,似乎对许多身份验证都很有效,所以看起来很酷。

    场景:我想说,只有当用户登录时,/profile才能继续。

    这是我的路线,

    var express = require('express');
    var router = express.Router();
    

    其余的在名为router/index.js的文件中

    var passport = require('passport');
    var ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn;
    
    
    router.post('/login', passport.authenticate('login', {
        successRedirect: '/home',
        failureRedirect: '/',
        failureFlash : true  
    }));
    
    
    router.get('/profile', ensureLoggedIn('/'), function(req, res){
        res.json({ user: req.user });
    });
    

    所以,根据我的理解和意愿,当我做GET/profile时,它必须转到登录页面,然后重定向到GET/proile。不幸的是,由于登录页面应该返回主页,所以它会返回主页。

    connect确保登录是我所期望的解决问题的方法,但事实并非如此。我如何使它按我的需要工作?

    1 回复  |  直到 9 年前
        1
  •  4
  •   robertklep    9 年前

    你应该使用 successReturnToOrRedirect 而不是 successRedirect :

    router.post('/login', passport.authenticate('login', {
      successReturnToOrRedirect : '/home',
      failureRedirect           : '/',
      failureFlash              : true  
    }));