首页 > 解决方案 > 在 Node.js 路由中添加 isAuthenticated 并不能防止未经身份验证的访问

问题描述

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

我的 /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');
});

标签: node.jspassport.js

解决方案


我想我已经找到了一个临时的答案。由于某种原因, app.get('/', ...) 路线不起作用。当我安装 ejs (模板引擎)然后 app.get('/', ...) 路由工作。我现在能够保护这条路线免受未经身份验证的用户的攻击。


推荐阅读