只允许passportjsauthentication的用户访问受保护的页面
将此代码放置在足以保护未经身份validation的用户访问的路由中?
if (!req.user) return res.send(401, "Not allowed in");
你可以使用req.isAuthenticated()
来检查请求是否被authentication。
function ensureAuthenticated(req, res, next) { if (req.isAuthenticated()) { return next(); } res.redirect('/login') } app.get('/server', ensureAuthenticated, routes.server.get); app.get('/login', routes.login.get);
或者像这样
app.all('*', function(req,res,next){ if (req.params === '/' || req.params === '/login') next(); else ensureAuthenticated(req,res,next); });
只要你不在某个地方泄漏路线就够了。 只要确保你的路线是在正确的顺序。
//checks to be sure users are authenticated app.all("*", function(req, res, next){ if (!req.user) res.send(403); else next(); }); //additional routes will require authentication due to the order of middleware app.get("/admin", ....
但是,如果您将pipe理路线移至全局之上,则pipe理路线将不再受保护。 你可能想有目的地把你的login页面提前,所以它不需要身份validation,例如。
更正user568109的答案,用express 4代码必须是这样的:
app.all('*', function(req,res,next) { if (req.path === '/' || req.path === '/login') next(); else ensureAuthenticated(req,res,next); });
- Mean Stack – 使用Express来发送AngularJS的所有静态内容
- 如何从其他服务器获取映像到我的Express服务器并写入磁盘
- 如何configurationexpressjs来处理http和https?
- 在express中设置ejs的查看文件夹的查找path
- Nodejs – 是否有任何模块存在类似于nodejs中的请求模块?
- Mongoose TypeError:用户不是一个构造函数
- pipe道将Gulpstream文件的内容连接到服务器(connect,express或http)响应
- 使用express node.js的路由,但是express.Router没有定义
- 在多个文件中需要相同的模块