当前位置: 首页 > 面试题库 >

在授权路由中使用express.static中间件

洪涵亮
2023-03-14
问题内容

我正在将node与express和passportjs一起使用,以限制对位于私有文件夹中的文件的访问。我将代码简化为以下内容。公共静态文件夹中的所有内容都可以正常工作,但通过使用staticMiddleware定位到私有文件夹的路由将返回404错误。

var express = require('express')
,   util = require('util');

var app = express.createServer();
var staticMiddleware = express.static(__dirname + '/private');

app.configure(function() {
  app.use(app.router);
  app.use(express.logger('dev')); 
  app.use('/public',express.static(__dirname + '/public'));
});

app.get('/private/:file', function(req, res, next){
    console.log('about to send restricted file '+ req.params.file);
    staticMiddleware(req, res, next);
});
app.listen(16000);

我使用的以下参考似乎对其他人有用,因此我一定会丢失一些东西。这对我来说不起作用,对于私有区域中的内容仅显示404响应。

我本可以发誓我以前曾做过这项工作,也许它被新版本的东西弄坏了。

  • node v0.8.1
  • npm 1.1.12
  • express@2.5.11
  • connect@1.9.2

问题答案:

一直盯着我

app.get('/private/:file', function(req, res, next){
    console.log('about to send restricted file '+ req.params.file);
    req.url = req.url.replace(/^\/private/, '')
    staticMiddleware(req, res, next);
});

编辑11-29-2014

因此,在有人提出问题之后,我回到了这个答案,以至于即使我提到了passportjs,也从未展示过我最终如何使用此功能。

var staticMiddlewarePrivate = express['static'](__dirname + '/private');

app.get('/private/*/:file', auth.ensureAuthenticated, function(req, res, next){
    console.log('**** Private ****');
    req.url = req.url.replace(/^\/private/, '');
    staticMiddlewarePrivate(req, res, next);
});


 类似资料:
  • 我必须表,我正在验证与,。我已经相应地更改了警卫和提供者的配置/auth.php。 现在我有一些守卫的路线为像: 我在上面的路径上应用,它将我踢回登录页面(),而不是管理员仪表板页面。 为什么,我错过了什么?

  • 1.1.0版本新增了路由授权功能,采用RBAC权限管理方式实现。 每个ISV(appKey)对应一个或多个角色 每个角色分配多个路由权限 接口跟角色相关联,ISV拥有哪些角色,就具有角色对应的接口访问权限。 假设把路由a,b,c分配给了VIP角色,那么具有VIP角色的ISV可以访问a,b,c三个路由。 默认情况下,接口访问时公开的,ISV都能访问。如果要设置某个接口访问权限,在@Open注解中指定

  • 我尝试在Angular 7中通过路由实现标准JWT授权。我的app-routing.module.ts部分: 我也有auth.service.ts: 在Heade组件中,我有带有“login”项的下拉列表,我的代码有: 我做错了什么? 如何刷新令牌?

  • 问题内容: 我有一个问题要阻止未经授权的用户访问仅授权的路由/组件-例如登录的用户仪表板 我有以下代码: 路由器: 我尝试记录日志以检查是否已输入条件,但是从渲染函数收到错误消息,提示它无法读取null属性。 有没有办法解决我的问题,并且有更好的方法来满足我的要求?只有授权用户才能严格访问特定组件 问题答案: 警告:以下答案使用React的旧上下文API。 如果您使用的是V16.3 +,则以下答案

  • 问题内容: 在安装组件之前进行授权检查的最佳实践是什么? 我使用react-router 1.x 这是我的路线 这是我的仪表板组件: 问题答案: 更新了 React Router v4的* 解决方案 * 反应路由器到v3 使用’onEnter’事件并在回调中检查用户是否被授权:

  • 问题内容: Angular在路由上不提供任何授权/访问权限(我说的是默认的Angular路由1.x,而不是beta 2.0或UI路由)。但是我必须执行它。 我遇到的问题是我有一项服务,该服务调用服务器以提供此信息并返回承诺。但是,此数据仅获取一次,然后缓存在客户端上,但是仍然需要获取一次。 我现在想处理检查下一条路由是否定义了特定属性的事件。然后,该处理程序应使用我前面提到的服务获取该数据,并根据