express js无法重定向用户

时间:2018-12-08 07:31:50

标签: node.js express monodevelop

var express = require('express');
var firebase = require('firebase');
var admin = require('firebase-admin');
var router = express.Router();




    router.post('/api/login', function(req, res) {

      var email = req.body.email;
      var pass = req.body.password;


                login(email, pass);




    });


     function login(email, pass){
        firebase.auth().setPersistence(firebase.auth.Auth.Persistence.NONE);
        firebase.auth().signInWithEmailAndPassword(email, pass).then(function (user) {
          if(user){
            console.log('user');
            res.redirect('/signup');
          };




        }).then(() => {
          // A page redirect would suffice as the persistence is set to NONE.
          return firebase.auth().signOut();
        }).then(() => {
          window.location.assign('/signup');
        }).catch(function (error) {

          var errorMessage = error.message;
        });  // auth catch End 

      };// login fun 

............................................... ................................................... ................................................... ...... 如果用户不等于null,那么我想将用户重定向到注册

1 个答案:

答案 0 :(得分:0)

如果POST请求来自浏览器网页中的Ajax调用,则对该请求的响应仅发送给进行Ajax调用的脚本。浏览器根本看不到它,因此浏览器本身对POST的响应不执行任何操作。响应只是转到您的脚本。因此,如果要在Ajax调用后重定向页面,则需要返回脚本可以识别的响应,然后脚本需要执行客户端重定向,例如:

window.location = "http://someURL";

如果您的脚本正在寻找重定向响应,则可以让脚本查看状态和标头以查看重定向,也可以,而是返回一些JSON来告诉脚本该怎么做。


如果POST请求来自浏览器中的HTML表单(不涉及Javascript),则浏览器将查看POST的响应并显示结果响应(如果为2xxx响应),或者遵循重定向(如果这是一个3xx的响应。