举例,我打算为设定一个管理后台,建立Areas/Admin;
这样访问就是www.xxx.com/Admin/xx,如何自定义这个Admin呢?这样的方法安全性能很差,在不改变文件夹命名的情形下,如何自定义这个路径?
提供一种方案你看是否可行,AdminAreaRegistration.cs中代码如下:
public static readonly string customAreaName = "Admin_23ser3g1"; public override string AreaName { get { return "Admin"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Admin_default", customAreaName + "/{controller}/{action}/{id}", new { controller = "index", action = "Index", id = UrlParameter.Optional }, new[] { "MvcApplicationQuestionTest.Areas.Admin.Controllers" } ); }
然后在链接的地方这样写:
@using MvcApplicationQuestionTest.Areas.Admin; <a href="/@(AdminAreaRegistration.customAreaName)/index/home">Test</a>
对于URL路由:/{controller}/{action}
你可以修改为:/Abc/{action},然后设置controller指向Admin
在你的AdminAreaRegistration.cs中方法public override void RegisterArea(AreaRegistrationContext context)内注册你的area即可。
context.MapRoute( "Admin_default", "Admin/{controller}/{action}", new { controller = "Default" ,action="Home"} );
我是说,名字是Admin很容易被外界攻击,怎么变成我自己定义的名字,
context.MapRoute(
"Admin_default",
"Admin_23ser3g1/{controller}/{action}",
new { controller = "Default" ,action="Home"}
);
这样定义是可以,可以www.xxx.com/Admin_23ser3g1这样来访问管理后台,但是登录认证还是定向到/Admin/Account/LogOn了,而不是/Admin_23ser3g1/Account/LogOn
@红尘中迷茫: 从你的描述看来,应该是登录认证的跳转没有调整到你新修改的URL上。按照你回复的那个MapRoute已经可以实现修改路径了。