3 回答

TA貢獻1806條經(jīng)驗 獲得超5個贊
作為重定向的替代方法,如果它正在調(diào)用您自己的代碼,則可以使用以下命令:
actionContext.Result = new RedirectToRouteResult(
new RouteValueDictionary(new { controller = "Home", action = "Error" })
);
actionContext.Result.ExecuteResult(actionContext.Controller.ControllerContext);
它不是純粹的重定向,但會產(chǎn)生類似的結(jié)果而沒有不必要的開銷。

TA貢獻1856條經(jīng)驗 獲得超5個贊
我正在使用MVC4,我使用以下方法在違反授權(quán)時重定向自定義html屏幕。
擴展AuthorizeAttribute說CutomAuthorizer 覆蓋OnAuthorization和HandleUnauthorizedRequest
在CustomAuthorizer中注冊RegisterGlobalFilters。
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CustomAuthorizer());
}
識別unAuthorized訪問呼叫HandleUnauthorizedRequest并重定向到相關(guān)的控制器操作,如下所示。
public class CustomAuthorizer : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
bool isAuthorized = IsAuthorized(filterContext); // check authorization
base.OnAuthorization(filterContext);
if (!isAuthorized && !filterContext.ActionDescriptor.ActionName.Equals("Unauthorized", StringComparison.InvariantCultureIgnoreCase)
&& !filterContext.ActionDescriptor.ControllerDescriptor.ControllerName.Equals("LogOn", StringComparison.InvariantCultureIgnoreCase))
{
HandleUnauthorizedRequest(filterContext);
}
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result =
new RedirectToRouteResult(
new RouteValueDictionary{{ "controller", "LogOn" },
{ "action", "Unauthorized" }
});
}
}
- 3 回答
- 0 關(guān)注
- 618 瀏覽
添加回答
舉報