Asp.net mvc 如何阻止未经身份验证的用户访问文件夹

Asp.net mvc 如何阻止未经身份验证的用户访问文件夹,asp.net-mvc,owin,Asp.net Mvc,Owin,我需要阻止访问Asp.Net MVCweb应用程序文件夹中的静态文件 我曾经阻止访问web.config中的以下配置 <location path="help"> <system.web> <authorization> <deny users="?" /> <allow users="*"/> </authorization> </system.web> <

我需要阻止访问
Asp.Net MVC
web应用程序文件夹中的静态文件

我曾经阻止访问web.config中的以下配置

<location path="help">
  <system.web>
    <authorization>
      <deny users="?" />
      <allow users="*"/>
    </authorization>
  </system.web>
</location>
我认为iis的安全性将适用于静态文件,但即使没有cookie,我仍然可以访问该文件夹

我如何仅为经过身份验证的用户限制对特定文件夹的访问

问候


编辑:多亏了Tommy的评论,我可以解决我的问题,但是有没有什么好的阅读资料可以更好地理解使用owin和asp.net mvc可以/不能做什么?我想了解为什么我不能阻止拒绝用户访问?

我们这样做的一种方法(这是关于上传,但原理相同)是使用控制器操作作为文件的“门”,并使用IIS阻止直接链接到文件文件夹本身。这样,.NET应用程序就可以处理文件周围的所有角色和身份验证。即使您无法从浏览器访问文件,应用程序代码也可以访问这些文件,以便将其返回到浏览器user@Tommy谢谢你的指点,hiddenSegments会成功的。我刚刚看到你的编辑。原因在于IIS和.NET如何协同工作。简化版本:IIS处理所有传入的请求。它首先查看该位置中是否存在静态(物理)文件。如果它这样做了,它将返回该值。如果不匹配,.NET将接管该请求,以查看它是否匹配路由。OWIN在.NET中运行,而不是在IIS中运行。所以,如果IIS看到物理文件,.NET将被绕过。这就是为什么像我上面所做的那样对内容进行控制是有效的,它将请求传递到.NET管道中。无法拒绝用户,从未将其用于应用程序安全。IIS本身以用户身份运行,可能与
*
匹配,而不是
,或者由于IIS没有将请求传递到.NET管道,因此可以完全绕过web.config。不知道是哪一个在@Tommy上没有大量阅读。我知道默认情况下,静态文件不会由.Net管道管理,为了提高性能,这不是我的目标,但对于表单身份验证,我们使用了如下配置:。我想知道Owino是否有可能我们这样做的一种方式(这是关于上传的,但原理是一样的)是使用控制器操作作为文件的“门”,并使用IIS防止直接链接到文件文件夹本身。这样,.NET应用程序就可以处理文件周围的所有角色和身份验证。即使您无法从浏览器访问文件,应用程序代码也可以访问这些文件,以便将其返回到浏览器user@Tommy谢谢你的指点,hiddenSegments会成功的。我刚刚看到你的编辑。原因在于IIS和.NET如何协同工作。简化版本:IIS处理所有传入的请求。它首先查看该位置中是否存在静态(物理)文件。如果它这样做了,它将返回该值。如果不匹配,.NET将接管该请求,以查看它是否匹配路由。OWIN在.NET中运行,而不是在IIS中运行。所以,如果IIS看到物理文件,.NET将被绕过。这就是为什么像我上面所做的那样对内容进行控制是有效的,它将请求传递到.NET管道中。无法拒绝用户,从未将其用于应用程序安全。IIS本身以用户身份运行,可能与
*
匹配,而不是
,或者由于IIS没有将请求传递到.NET管道,因此可以完全绕过web.config。不知道是哪一个在@Tommy上没有大量阅读。我知道默认情况下,静态文件不会由.Net管道管理,为了提高性能,这不是我的目标,但对于表单身份验证,我们使用了如下配置:。我想知道奥文是否有可能
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Login/index"),
    CookieHttpOnly = true,
    CookieSecure = CookieSecureOption.Always, // https for dev also
});