我试图测试以下代码。这是一个汇总代码。
string url = filterContext.HttpContext.Request.Url.ToString();
if (Url.IsLocalUrl(url))
{
return Redirect(url);
}
else
{
return RedirectToAction("Index", "Home");
}
在此代码中,url是从上下文获取的,但在我的原始代码中,它从Authorize过滤器作为字符串传递给控制器操作,在Debug.Write中看起来像http://localhost:53249/Products
。但是IF
不满意网址是本地网址,有人可以解释我做错了什么。
答案 0 :(得分:2)
使用以下句子解决它
string url = filterContext.HttpContext.Request.Url.PathAndQuery;
答案 1 :(得分:1)
我猜您只需要检查HttpRequest.IsLocal
答案 2 :(得分:0)
将returnUrl传递给Url.IsLocalUrl()而不是当前请求url上下文。 您将无效网址传递给Url.IsLocalUrl()。