节点 js 护照重定向结果为 404
Node js passport redirect results in 404
我正在使用我的电子邮件和密码向/login发出发布请求,护照正确验证了它,没有调用错误,然后返回res.redirect('/profile')也运行。但它返回 404。
这是我尝试过的两个登录函数,它们都会导致"GET/profile 404",即使当我执行"GET/profile"时,它通常返回 200
// router.post('/login', passport.authenticate('local-login', {
// successRedirect : '/profile', // redirect to the secure profile section
// failureRedirect : '/login' // redirect back to the signup page if there is an error
// }));
router.post('/login', function(req, res, next) {
passport.authenticate('local-login', function(err, user) {
if (err) { return next(err); }
if (!user) { return res.redirect('/login'); }
req.logIn(user, function(err) {
if (err) { return next(err); }
console.log("thisgetsrun")
return res.redirect('/profile');
});
})(req, res, next);
});
这里是/个人资料
router.get('/profile', isLoggedIn, function(req, res) {
console.log("profile")
res.render('profile');
});
并且已登录
function isLoggedIn(req, res, next) {
console.log("is logged in")
if (req.isAuthenticated())
return next();
res.redirect('/');
}
控制台登录 isloggedin 或配置文件均未打印
最后是我的应用程序.js
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var passport = require('passport');
require('./config/passport')(passport)
var mongo = require('mongodb');
var monk = require('monk');
var db = monk("mongodb.........");
var routes = require('./routes/index');
var users = require('./routes/users');
var session = require('express-session');
var app = express();
....
app.use(function(req,res,next){
req.db = db;
next();
});
app.use(session({ secret: 'blah' })); // session secret
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use('/', routes);
app.use('/users', users);
app.use(function(err, req, res, next) {
res.status(404);
res.render('404');
});
module.exports = app;
有谁知道为什么会这样?
您确定视图profile
存在并且相对于视图引擎的位置正确吗?当您执行"GET/profile"时,通常会isLoggedIn
重定向到"/",因为req.isAuthenticated()
false
,因此问题在于用户登录并调用res.render('profile');
。确保您具有类似于以下内容的视图引擎设置:
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
profile
视图位于视图文件夹内。
相关文章:
- 通过javascript重定向html传递php变量
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 使用angular重定向到html页面
- 谷歌CSE-我可以显示嵌入在我的网站上的页面本身,而不是从结果视图重定向到页面
- 节点 js 护照重定向结果为 404
- 当将页面提交到谷歌表单时,它将打印结果,然后使用 javascript 重定向到主页
- 使用 JavaScript 搜索字符串,如果结果为 true,则重定向页面
- 阿尔戈利亚重定向到搜索结果
- 如何先从Firebase获取结果,然后重定向到另一个页面
- 在页面加载过程中,在不重定向到其他页面的情况下,在同一页面上打印距离结果
- 加载结果后重定向到新页面
- 如何在表单提交后停止重定向到API调用结果
- Rails控制器和javascript:不要给出期望的重定向结果
- 如何从谷歌网页搜索api重定向搜索结果
- 对单个搜索结果进行重定向
- 使用javascript,如何在img src上进行302重定向后获得最终结果URL
- 基于脚本结果重定向页面
- ASP.NET MVC jQuery JSON 结果重定向 URL
- JavaScript重定向会导致不需要的搜索引擎结果
- 我如何重定向到一个动作结果在mvc视图