par*_*gan 6 asp.net asp.net-mvc-3 asp.net-mvc-4
[Authorize]
public class MyController : BaseController
{
[PermissionAuthorize]
public ActionResult GridData()
{
return Json(data, JsonRequestBehavior.AllowGet);
}
}
Run Code Online (Sandbox Code Playgroud)
我为特定操作的用户检查权限创建了PermissionAuthoize属性.我遇到问题用户会话或故障单在此时间到期后如果用户向Controller发送ajax requrest,则Authorize属性拒绝该请求并以html登录表单的形式返回给user.this region用户认为应用程序未执行.它显示了对用户的不良影响.
所以,如果他们在票证过期时发送ajax请求,我想重定向到用户登录页面.
我可以为控制器创建另一个授权属性吗?
您需要做的第一件事是配置表单身份验证模块,以便在抛出401时停止重定向到登录页面.Phil Haack写了一篇nice article关于如何实现这一目标的文章.
完成后,您将能够在客户端上捕获401 HTTP状态代码.因此global ajax handler,当从服务器发送401状态代码时,您可以编写一个将重定向到登录页面(当表单身份验证票证到期或用户未经过身份验证时将发生这种情况):
$(document).ajaxError(function(event, jqxhr, settings, exception) {
if (jqxhr.status == 401) {
// unauthorized
window.location.href = '/logon';
}
});
Run Code Online (Sandbox Code Playgroud)
以下代码可能对您有帮助:
$.ajax({
url: 'url',
statusCode: {
404: function() {
//page not found
},
200: function() {
//ok, do your stuff
},
302: function() {
//redirect - check if url contains login and do redirect
}
}
})
Run Code Online (Sandbox Code Playgroud)
基本上你只能检查重定向并在success/error回调中执行常规操作,但是当你获得重定向 http 标头时,你可以将 window.location.href 更改为所需的登录页面
| 归档时间: |
|
| 查看次数: |
2985 次 |
| 最近记录: |