.NET MVC:我如何提供静态文件只对授权用户

问题描述:

有在我的网站的静态文件,如:.NET MVC:我如何提供静态文件只对授权用户

http://myurl.com/Content/a.html

http://myurl.com/Content/b.html

...等

我想在访问时验证用户的身份验证。认证应该由数据库的数据检查。

我的框架:ASP.NET MVC5

+0

理想情况下,它应该通过Controller和Action方法重定向,您可以在其中执行认证和授权。 –

+0

我试过这个[链接](http://stackoverflow.com/questions/41357311/net-mvc-how-to-hide-the-true-url),但从静态HTML JavaScript文件是相对路径,所以当我在我的Action中使用http://myurl.com/Content/a.html作为源代码时,它将从http://myurl.com/MyController/MyAction/abc.js获取javascript文件,它显示错误.. –

我终于通过this way解决了这个问题,重要的是我必须用绝对路径替换静态文件的相对路径。

确保用户在你的web.config使用授权元素认证。如果您的所有静态页面都位于名为StaticPages的文件夹中,请将web.config文件添加到该文件夹​​并插入下面的代码。

<location path="/StaticPages"> 
<system.web> 
    <authorization> 
    <deny users="?"/> 
    </authorization> 
</system.web> 

https://msdn.microsoft.com/en-us/library/8d82143t(v=vs.85).aspx

而不是把你的文件,在传统的方法/myserver/myfile.html的,考虑增加其authinticating用户后返回文件的操作:

[Authorize] 
public ActionResult GetFile(string name) 
{ 
    // return the file 
} 

您可能还使用OutputCache属性来缓存你的静态文件,这样它就不会每次都被请求(如果你确定你的文件内容不会改变)