node.js - 在 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');
});
解决方案
我想我已经找到了一个临时的答案。由于某种原因, app.get('/', ...) 路线不起作用。当我安装 ejs (模板引擎)然后 app.get('/', ...) 路由工作。我现在能够保护这条路线免受未经身份验证的用户的攻击。
推荐阅读
- node.js - 我正在处理一个查询字符串,我得到了这个:错误 [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client port:8080
- security - Windows 10 上的 MSMQ - 无法发送消息
- html - 忽略@if语句的Scss mixin
- python - 将字典列表(来自 API)中的数据解析为 pandas 数据框
- azure - 错误 1044 拒绝用户访问 Azure Database for MySQL
- c++ - GCC 版本兼容性
- automation - 如何制作电报机器人
- swiftui - SwiftUI + 自动填充凭据提供程序
- r - 在 R 中,绘制每年唯一事件的平均数量
- java - 注册页面上primefaces命令按钮ajax失败后的Spring Security 302重定向