【发布时间】:2012-03-25 10:05:46
【问题描述】:
我有许多 ajax 操作(使用 JQuery.ajax 实现)的应用程序,它返回 JSON ot html。其中一些应该只有授权用户才能访问,我用[Authorize] 属性装饰了它们。对于非 ajax 操作,如果用户未经授权 - 系统会将他重定向到登录页面(在 web.config 中配置)。
但这不适用于 ajax 操作,因为如果用户被授权 - 他加载页面,在该 cookie 过期并且他未被授权之后,而不是 html 块,应该替换旧的,他得到我的登录页面块内.
我知道我可以手动解决这个问题,例如删除 [Authorize] 属性,如果用户没有授权,则返回特殊的 json/empty html。但我不喜欢这个解决方案,因为我需要重写所有的动作和 ajax 函数。我想要全局解决方案,允许我不重写我的操作(可能是自定义授权属性,或一些 http 未经授权的结果自定义处理)。
如果请求是ajax,我想返回状态码,如果请求不是ajax,我想重定向到登录页面。
【问题讨论】:
-
"如果请求是 ajax,我想返回状态码,如果请求不是 ajax,我想重定向到登录页面。" -- 好像你已经概述了这个问题的解决方案,不是吗?
-
此时您尝试过做什么?不管你走哪条路,都会涉及到一些重写。
-
有时我是个白痴。尝试使用 Request.isAjaxRequest();
标签: jquery asp.net-mvc asp.net-mvc-3 http-status-code-401 unauthorized