node.js - 如何用 Passport 保护 express 中的静态文件夹

标签 node.js express passport.js

我有一个基于 express 的项目,需要基于 Passport 的身份验证。

后台是一个用作静态文件的 angularjs 应用程序。

我的验证码完全基于https://github.com/jaredhanson/passport-local/blob/master/examples/express3-no-connect-flash/app.js

如果您未通过身份验证,请不要为 Angular 应用程序提供服务。我尝试在/admin 路由上添加 ensureAuthenticated 但它使路由不起作用(404)。一旦我删除了 ensureAuthenticated,就会提供/admin。

app.use(express.static(path.join(__dirname, 'public')));
app.use('/admin', ensureAuthenticated, express.static(path.join(__dirname, 'admin')));
//serve routes
app.use(app.router);

公用文件夹包含登录页面。

我怎样才能做到这一点?

最佳答案

遇到了同样的问题,这就是我最终要做的!

app.use doesn't let you chain middlewares in that way. The various app.VERB functions do, but app.use doesn't. That's for one middleware at a time.

If you split the 2 middlewares out into separate calls, you should get the results you want:

app.use('/admin', ensureAuthenticated);
app.use('/admin', express.static(path.join(__dirname, 'admin')));

Cannot use basic authentication while serving static files using express

关于node.js - 如何用 Passport 保护 express 中的静态文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21335868/

相关文章:

mysql - nodejs,mysql-db : handling results of query that use join

node.js - 我应该使用快速的客户端 react 路由器还是服务器端 react 路由器?

node.js - Passport.js:如何保护所有路由?

javascript - 创建辅助函数以在隔离范围内运行函数

sql - 如何为 Sequelize 转换 SQL 查询?

node.js - 如何更新集合/MongoDb/Nodejs 中所有数据中的参数

javascript - PassportJS/Express 内部出错后如何重定向?

javascript - passportjs LocalStrategy 是否允许比默认用户名和密码更多的参数?

javascript - 我正在尝试使用 facebook 进行身份验证,但收到错误 TokenError : Malformed auth code

javascript - 在生产中直接表达到错误的端点,但在开发中完美工作