2014-09-29 77 views
8

我需要保护静态HTML文件的整个文件夹。目的是用户不能访问这些文件,除非它们被认证并且具有必要的作用。ASP.NET MVC中的静态文件授权w Owin

我们已经使用OWIN设置了基于cookie的身份验证,但无论我尝试了什么,我似乎都无法弄清楚需要对文件夹进行身份验证的更改的正确组合。

第一个问题是IIS完全跳过ASP.NET并仅仅提供文件。我认为可能通过将runAllManagedModulesForAllRequests设置为true来解决这个问题。但我从哪里去?我试过在Web.config中的填充元素来要求正确的角色,但它只是导致每个请求被拒绝(大概是因为它没有检查正确的cookie或其他东西)。

我已经度过了整整一天的时间,我即将失去理智。

有没有人解决过这个问题?

+0

创建一个实现“IHttpHandler”的类,并将您的安全性放在那里。请参阅http://stackoverflow.com/q/1146652 – 2014-09-29 22:09:58

+0

在这种情况下,我会将我的角色检查和等等放入RouteHandler中?我不积极,但这似乎并不适合这种事情。 – 2014-09-29 22:13:45

+1

然后从标准控制器方法提供文件。这可能是我如何做到的。你可以用你想要的任何安全性来加载,MVC神将会得到满足。 – 2014-09-29 22:15:17

回答

3
  1. IIS是服务静态文件,如果你想停止这个你可以删除默认的静态文件处理程序比每次请求是 通过服务器D MVC/OWIN。
  2. 不是让你的控制器 静态文件处理和授权:听/地图路线,其中静态文件位于

删除默认静态文件处理程序将它添加到的web.config文件

<configuration> 
    <system.webServer> 
     <handlers> 
      <remove name="StaticFile" /> 
     </handlers> 
    </system.webServer> 
</configuration> 
+0

我如何得到这个角度?我的网页应用程序是使用Typescript在Angular 1.6中编写的。如果我删除了StaticFile模块,index.html不会被提供,它会搅乱一切。我只需要限制**附件**文件夹和服务器静态/媒体文件对授权用户的访问。有任何想法吗? – Nexus 2018-02-18 00:04:56

+0

看看,这可能会帮助你https://stackoverflow.com/a/11258217/715224 – 2018-02-23 19:11:50

+0

你是一个朋友!非常感谢,让我看看,并试试看。多谢。 – Nexus 2018-02-23 19:27:34