用户登录后无法让 Express 重定向到主页

Cant get Express to redirect to main page after user login

我正在尝试设置用户登录部分。 user_router 正在发送 JSON 响应,但我无法让 Express 将新的 html 页面发送回客户端。提供的第一个页面是 login.html,其中包含用于登录验证的提交表单。目标是在登录验证后发回 200 状态消息以及实际的 app.html 页面。状态消息有效,但是 Express sendFile 没有将浏览器重定向到 app.html 页面。我在这里做错了什么?

首先加载app.js文件。它具有以下配置:

const user_router = require( './router/user_router' );
const path = require( 'path' );
const public_directory = path.join( __dirname, '../public' );
const express = require( 'express' );
const app = express();
app.use(express.static( public_directory , {index: 'login.html'}));
app.use( user_router );
app.use( express.json() );

应该进行验证和重定向的 user_router.js 文件。

const auth = require( '../middlewear/auth' );
const express = require( 'express' );
const User = require( '../model/user_model' );
const router = new express.Router();
router.use( express.json() );

router.post( '/users/login' , async ( req , res ) => {
        
    try {       
        const user = await User.find_by_credentials( req.body.email , req.body.password );      
        const token = await user.create_token();
        const path = require( 'path' );     
        const app = path.join( __dirname, '../../public/app.html' );        
        res.sendFile( app );
        res.send( { user , token } );
    }
    catch( err ){
        res.status( 400 ).send();
    }
});

如果您想发出重定向响应,您需要使用 redirect method

sendFile 方法发送一个文件……用于客户端请求的 URL。它非常不会重定向它们。

send 方法也发送一个不是重定向的响应。


此外,一个请求只能有一个响应(好吧,除非你使用 the new features in HTTP/2

redirectsendFilesend:选择 一个 (如果要重定向,则应为 redirect !)