【发布时间】:2014-06-26 16:34:27
【问题描述】:
我已经确定了一个挑战,那就是在请求是 ajax 时记录和继续/通知用户有关服务器异常的能力。在基本控制器中使用 OnException 并查找请求是 ajax 我可以返回一个自定义的“...uhoh”视图来呈现。
现在,我正在与未经过身份验证的部分作斗争。我正在努力使用这个修改过的代码来代替我的基类中的 [Authorize] 属性。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class AjaxAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.Result = new JsonResult{Data = new{NotAuthenticated=1}, JsonRequestBehavior = JsonRequestBehavior.AllowGet};
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
}
目前,有一些区域可以将 NotAuthenticatedas 数据返回到客户端中的 Ajax 调用。我会以正确的方式解决这个问题吗?刚刚找到以 Ajax 结尾的主要流程。
if(returnData.NotAuthenticated){
if (that.onNotAuthenticated != null)
that.onNotAuthenticated();
else
_loadView(viewElement, "Request requires authorization. Please login again.");
} else
_loadView(viewElement, returnData);
}
但是,我正在使用 Kendo 完整库和可能的其他库。当通过 Ajax 调用触发时,是否有更好的“全局”方式来处理会话超时或身份验证重定向?
请帮忙!
【问题讨论】:
-
一个关于提问的建议,保持简单和简短,只提供必要的信息。我刚刚读了你的最后一段:)
标签: c# ajax asp.net-mvc asp.net-mvc-4 kendo-ui