Asp.net mvc 需要检查用户是否提供了有效的returnUrl

Asp.net mvc 需要检查用户是否提供了有效的returnUrl,asp.net-mvc,Asp.net Mvc,我正在开发一个MVC5应用程序。我的应用程序需要返回URL功能。以下是我使用返回Url的登录操作: [AllowAnonymous] public ActionResult Login(string returnUrl) { ViewBag.ReturnUrl = returnUrl; var model = new LoginViewModel(); return View(model); } 这是预期的工作。当用户使用返回url登录时,他将被导航到返回url提供的

我正在开发一个MVC5应用程序。我的应用程序需要返回URL功能。以下是我使用返回Url的登录操作:

[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
    ViewBag.ReturnUrl = returnUrl;
    var model = new LoginViewModel();

    return View(model);
}
这是预期的工作。当用户使用返回url登录时,他将被导航到返回url提供的路径。现在,当返回url无效或用户没有指定url的权限时,我希望用户导航到仪表板。有没有办法根据返回的url获取操作名和控制器名


我将路由与属性路由一起使用,因此我无法将url拆分为多个部分并检查有效操作,因为名称可能因属性路由而不同。

您在此处要求两种方案

  • 返回url无效
  • 用户没有权限
  • 首先,只需检查URL验证,如下所示

    if(Uri.IsWellFormedUriString(returnUrl,UriKind.Absolute))

    第二,让它重定向,作为默认行为,若用户并没有访问returnUrl的权限,应用程序将再次重定向到相应的仪表板页面
    (请阅读SOLID principles中的“S”)

    安全性:请验证returnUrl是否为本地URL。ASP.NET(核心)提供了
    IsLocalUrl
    helper方法。如果用户以另一种方式导航到无效Url,该怎么办?也许这个重定向不是解决问题的地方。
    if(Uri.IsWellFormedUriString(returnUrl,UriKind.Absolute))
    只会检查url是否有效。但是我想检查一下我当前的应用程序中是否存在它。表示是否存在特定的控制器和操作。