0

我有一个 .Net Web 项目,但是在大多数情况下,我们使用的是 html 页面(理想情况下,我们应该有一个网站项目)。这些页面使用RequireJS加载依赖项,因此唯一的Razer部分是在加载初始 html 页面时发生的。现在,这个站点既是主页又是管理页面。主页不需要与管理页面处于同一级别。因此,我们使用mapPageRoute主页来简单地指向适当的主页 html 页面。
现在对于管理页面,我们需要进行身份验证并确保用户是管理员。目前,为了实现这一目标,我们有一个AdminController它返回一个视图(我们为此视图添加了一个自定义位置,因为它不在默认的 Views 文件夹中)。所以我们的控制器看起来像这样:

namespace XXXXX.YYY.Web.Controllers
{
    public class AdminController : Controller
    {
        [RequiresPrivilegeAttribute(Constants.Security.Privileges.ADMINISTER_APPLICATION)]
        public ActionResult Index()
        {
            return View();
        }
    }
}

我想做的是遵循与主站点相同的模式,通过定义一个简单地加载 html 文件的路由。对于主页,我们在RouteConfig(发生在App_Start)中使用它:

routes.MapPageRoute(
           "",
           String.Empty,
           "~/ui/dist/index.html"
        );

对于 Admin 站点路由,我们的第一个和第二个参数是“Admin”,第三个参数是 admin index.html 的位置(“~/ui/dist/admin/index.html”)。
这不适用于管理站点,因为它没有考虑管理员安全性。所以问题是:如何在不使用控制器的情况下保护 html 文件的路径?

此外,我们希望最终摆脱 .NET MVC 应用程序,并将其替换为纯 HTML SPA。所以我想在不使用控制器的情况下完成此操作。

4

2 回答 2

0

In an ASP.net MVC application you can't view a page without controller or map route for static html pages. Unless breaking its architecture perhaps by authorizing in configuration files to view html pages too. This cause to have anomaly and preferred security can't be ensured in this way although you have decreased it too!

于 2014-11-06T21:57:27.240 回答
0

您可以尝试在 Web.Config 中添加它,但我之前没有在 MVC 上尝试过这个......

<location path="ui/dist">
<system.web>
  <authorization>
    <allow users="UsersToAllow" />
    <deny users="UsersToDeny" />
  </authorization>
</system.web>
</location>

您可以拒绝未经身份验证的用户,<deny users="?"/>. 另外,请阅读此链接保护您的 ASP.NET MVC 应用程序...

于 2014-11-06T23:03:17.827 回答