我正试图在我的aspnetcore应用程序中实现"returnUrl“功能,但我很难找到一种将参数动态传递给操作的方法。
流程流程如下:

https://localhost:44358/Secure/VisualizationFiles?viz=vizFilePlaysLogin操作以登录(传递returnUrl)。现在,安全控制器方法使用ActionFilterAttribute,它拦截传入的HTTP请求并确保控制器;动作和参数作为returnUrl传递(在这种情况下为reRoute )。
public class NimsAuthenticationAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var url = filterContext.RouteData.Values["Controller"] + "/" + filterContext.RouteData.Values["Action"] + "?" + QueryString(filterContext.ActionArguments);
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", "Home" }, { "action", "Index" }, { "reRoute", url } });
base.OnActionExecuting(filterContext);
}
private string QueryString(IDictionary<string, object> dict)
{
var list = new List<string>();
foreach (var item in dict)
{
list.Add(item.Key + "=" + item.Value);
}
return string.Join("&", list);
}
}当用户被重定向(从安全控制器)到家庭控制器后,我们将传递完整的returnUrl (即reRoute URL)

正如您所看到的,现在我正在做一些容易出错的字符串处理,从Controller;Action和url params字符串中提取reRoute。我想知道:
reRoute url传递给Redirect?发布于 2020-11-04 12:44:42
您可以使用重定向方法而不是RedirectToAction。
所以在你的例子中,它看起来是这样的:
return Redirect("/" + reRoute);/将转到根url,否则请求将相对于当前控制器进行路由。
https://stackoverflow.com/questions/64679544
复制相似问题