【问题标题】:.net MVC:How do I serve static files only to authorized users.net MVC:如何仅向授权用户提供静态文件
【发布时间】:2020-02-21 14:47:26
【问题描述】:

我的网站中有静态文件,例如:

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

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

...等

我想在访问时验证用户的身份验证。身份验证应通过数据库数据进行检查。

我的框架:ASP.NET MVC5

【问题讨论】:

  • 理想情况下,它应该通过控制器和操作方法重定向,您可以在其中实现身份验证和授权。
  • 我已经尝试过这个 link ,但是来自静态 html 的 javascript 文件是相对路径,所以当我在我的操作中使用 myurl.com/Content/a.html 作为源时,它将从 myurl.com/MyController/MyAction/abc.js 获取 javascript 文件,它显示错误..

标签: c# asp.net-mvc


【解决方案1】:

在您的静态文件夹中创建 web.config 文件并插入此代码。

<configuration>
  <system.web>
    <authorization>
      <deny users="?"/>
    </authorization>
  </system.web>
</configuration>

【讨论】:

    【解决方案2】:

    不要将您的文件放在传统方法/myserver/myfile.html 中,而是考虑添加一个在对用户进行身份验证后返回文件的操作:

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

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

    【讨论】:

      【解决方案3】:

      确保使用 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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2016-08-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-24
          • 2019-05-10
          • 2021-01-31
          • 1970-01-01
          相关资源
          最近更新 更多