我有一个.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取而代之。所以我想在不使用控制器的情况下完成这项。
在ASP.net MVC应用程序中,如果没有静态html页面的控制器或映射路由,就无法查看页面。除非通过在配置文件中授权查看html页面来破坏其体系结构。这种导致异常和首选安全性的原因无法通过这种方式确保,尽管你也减少了它!
您可以尝试在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应用程序