【问题标题】:Serve static single page apps (static html) to only authenticated users with ASP.NET MVC仅使用 ASP.NET MVC 向经过身份验证的用户提供静态单页应用程序(静态 html)
【发布时间】:2012-09-08 05:44:12
【问题描述】:

我正在制作一个 ASP.NET MVC 站点,它需要为多个单页应用程序提供服务。

单页应用程序是静态 html、css 和 javascript 文件,一个包含 index.html 文件的文件夹和一些用于 css、图像和 javascript 的文件夹。

我从 IIS 服务器的虚拟目录中提供单页应用程序没有问题,但我想仅将它们提供给 ASP.NET MVC 解决方案中经过身份验证的用户,因此我现在正在尝试提供索引来自控制器方法的 .html 文件。

当我通过加载和提供 index.html 文件来执行此操作时,我无法弄清楚如何为 index.html 文件使用的所有 css 和 javascript 文件提供服务,因为它们被 index.html 以相对路径引用比如“css/style.css”和“js/somejavascript.js”。

我正在使用相关部分来简化独立于 ASP.NET MVC 解决方案的单页应用程序的开发和调试。

所以我的问题基本上是,我如何才能将具有相对 url 到 css 和 js 文件的静态 HTML 文件仅提供给 ASP.NET MVC 站点中经过身份验证的用户?

【问题讨论】:

    标签: asp.net asp.net-mvc iis iis-7


    【解决方案1】:

    如果我理解:您有一些不能/不想更改的静态 HTML 文件,带有相对 URL 链接。在这种情况下,只需构建您的 MVC 路由,以便相对路径起作用。例如,假设相对路径是这样的:

    js/script.js
    css/style.css
    

    当您将其发送回浏览器时,它将解析相对于当前路径的那些路径。因此,如果您从路由(例如)提供 HTML 文件:

    然后浏览器会发送请求到:

    因此相应地调整路由,并确保任何备用路由重定向到主路由,例如/home/index 应该重定向到/home

    【讨论】:

      【解决方案2】:

      放置一个

      [Authorize]
      

      用于提供“index.html”的控制器或操作的属性。

      默认情况下,脚本和 css 是公开的,因此不需要授权。

      【讨论】:

        猜你喜欢
        • 2019-05-10
        • 1970-01-01
        • 1970-01-01
        • 2016-03-31
        • 2014-09-07
        • 1970-01-01
        • 2015-04-20
        • 2016-01-30
        • 2021-12-20
        相关资源
        最近更新 更多