【发布时间】:2016-07-06 10:41:16
【问题描述】:
我在导航到 URL 时遇到问题。我的默认页面设置为登录,我的应用程序 URL 是 http://localhost:12345/#/。
这很好用,但用户可以通过两种方式登录应用程序
- 直接通过应用程序。
- 通过查询字符串获取用户名和密码。
当应用程序通过查询字符串记录时,url 类似于http://localhost:12345?auth=123654654656564/#/。
我想从 URL 中删除 auth 值。我试图映射路由,但它不起作用。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Account", action = "Login"}
);
我还尝试创建一个返回 view 的操作结果
routes.MapRoute(
name: "ActualDefault",
url: "{controller}/{action}",
defaults: new { controller = "Account", action = "LoginQuery" }
);
控制器:
public ActionResult Login()
{
if (Request.QueryString.Count > 0 && Request.QueryString != null)
{
//validating
return RedirectToAction("LoginQuery", "Account");
}
else
{
return View();
}
}
public ActionResult LoginQuery()
{
return View("Index");
}
以上代码删除了查询字符串,但 URL 将是 http://localhost:12345/Account/LoginQuery/#/。
我只需要像http://localhost:12345/#/ 这样的网址。
【问题讨论】:
-
不清楚您的要求。您没有将用户名和密码作为查询字符串发送到 GET 方法吗?
-
如果
QueryString是null,if (Request.QueryString.Count > 0 && Request.QueryString != null)会抛出异常(那么你的方法是错误的) -
实际上用户可以通过登录页面直接登录,也可以从其他应用程序通过发送用户名和密码作为查询字符串登录
-
我正在处理查询字符串和应用程序(从登录页面用户将输入用户名和密码)。如果查询字符串为空,则用户正在输入用户名和密码。
-
查看所有 URL,我可以看到它不受 angularJS 的控制,即在 URL 之后添加
#/。我会遇到类似的问题。似乎最好从您的其他应用程序中控制它。
标签: angularjs asp.net-mvc url-routing asp.net-mvc-routing routeconfig