【发布时间】:2014-11-24 10:07:33
【问题描述】:
我需要保护整个静态 HTML 文件文件夹。目的是用户无法访问这些文件,除非他们经过身份验证并具有必要的角色。
我们已经使用 OWIN 设置了基于 cookie 的身份验证,但无论我尝试什么,我似乎都无法找出正确的更改组合以要求对文件夹进行身份验证。
第一个问题是 IIS 完全跳过了 ASP.NET,只提供文件。我认为可能有一种方法可以将 runAllManagedModulesForAllRequests 设置为 true。但是我该去哪里呢?
我尝试在 Web.config 中填充元素以要求正确的角色,但这只会导致每个请求都被拒绝(可能是因为它没有检查正确的 cookie 或其他内容)。
我花了一整天的时间在这上面,我快要疯了。
有人解决了这个问题吗?
【问题讨论】:
-
创建一个实现
IHttpHandler的类,并将您的安全性放在那里。见*.com/q/1146652 -
在那种情况下,我会将我的角色检查等放入 RouteHandler?我不是很肯定,但这似乎不是适合这类事情的地方。
-
然后从标准控制器方法提供文件。这可能就是我会这样做的方式。您可以使用任何您想要的安全性预先加载它,MVC 之神会很满意。
-
正如@RobertHarvey 所说,使用控制器作为静态内容的看门人没有问题。这是我之前给出的 SO 答案,详细说明了我们如何对静态文件执行授权/身份验证 - *.com/questions/7208120/…
标签: asp.net asp.net-mvc authorization owin static-files