我正在尝试设置用户登录部分。user_router 正在发送一个 JSON 响应就好了,但是我无法让 Express 将新的 html 页面发送回客户端。提供的第一个页面是 login.html,其中包含用于登录验证的提交表单。目标是在登录验证时与实际 app.html 页面一起发送 200 状态消息。状态消息正在运行,但是 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
方法。
该sendFile
方法发送一个文件……用于客户端请求的 URL。它非常不会重定向它们。
该send
方法还发送一个不是重定向的响应。
更重要的是,一个请求只能有一个响应(好吧,除非你使用HTTP/2中的新特性)
redirect
, sendFile
, 或send
: 选择一个(redirect
如果你想重定向,应该是!)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句