用户登录后无法让 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)
redirect
、sendFile
或 send
:选择 一个 (如果要重定向,则应为 redirect
!)
我正在尝试设置用户登录部分。 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)
redirect
、sendFile
或 send
:选择 一个 (如果要重定向,则应为 redirect
!)