在Node.js路由中添加isAuthenticated不能防止未经身份验证的访问

时间:2019-07-07 15:36:13

标签: node.js passport.js

我想为此Web应用程序https://github.com/squallooo/MT5添加登录功能,并通过使用password.js添加isAuthenticated来保护“ /”路由,但没有运气。我什至删除了索引路由以查看会发生什么,但是索引视图仍然显示,因此我认为我正在修改错误的代码?在这种情况下,有人可以给我提示修改代码的提示吗?我希望在访问“ /”路由时将用户重定向到“ /登录”路由。

我的/ config / auth文件。

module.exports = {
    ensureAuthenticated: function(req, res, next){
        if(req.isAuthenticated()){
            return next();
        }
        req.flash('error_msg', 'Please login to view this resource');
        res.redirect('/login');
    }
}

我的索引路线

// Passport, Session
var session = require('express-session');
var passport = require('passport');

// session config
app.use(session({
    secret: "secret",
    saveUninitialized: true,
    resave: true
}));

// Passport
app.use(passport.initialize());
app.use(passport.session());

var { ensureAuthenticated } = require('./config/auth');

// I want to protect the routing by adding 'ensureAuthenticated'
app.get('/', ensureAuthenticated, function (req, res) {
    res.sendfile(__dirname + '/index.html');
});

1 个答案:

答案 0 :(得分:0)

我想我找到了一个临时答案。由于某些原因,app.get('/',...)路由无法正常工作。当我安装ejs(模板引擎),然后app.get('/',...)路由正在工作时。我现在可以保护该路由免受未经身份验证的用户的侵害。