6

在我的 MVC 应用程序中,我调用 HttpUnauthorizedResult 类并指定 statusDescription 参数。

if (!canAdd) {
    return new HttpUnauthorizedResult("You do not have access to add");
}

这也将我重定向到 AccountController 上的 Login 方法,然后我将它们重定向到适当的屏幕。

public ActionResult Login(string returnUrl)
{
if (WebSecurity.IsAuthenticated)
{
    return RedirectToAction("AccessDenied");
}
    ViewBag.ReturnUrl = returnUrl;
    return View();
}

我的问题是如何利用 Status Descripton 参数,最好在 AccessDenied 视图中显示这些详细信息。

4

1 回答 1

1

遇到了同样的问题。我使用 TempData 设置消息,因为无法设置 Viewbag。

filterContext.Controller.TempData["message"] = "Access Denied";
filterContext.Result = new HttpUnauthorizedResult();

HttpUnauthorizedResult 将我重定向到我的帐户控制器的登录操作,我在其中检查(错误)消息:

if (TempData.Count > 0)
{
    var message = TempData["message"];
    ModelState.AddModelError("", message.ToString());
}
于 2013-12-06T11:00:42.587 回答