我准备在通过Ajax返回部分视图的Actions上使用[Authorize]
;但是我没有得到我想要的行为(尽管它是我期望的行为)。
这似乎是一个长镜头;但是,有没有办法将此属性扩展为“突破”AJAX调用并将整个页面重定向到登录屏幕? (而不是将登录屏幕返回到我设置UpdateTargetId的任何位置?)
我想我已经掌握了如何在每个特定的Ajax调用上执行此操作,但如果我可以以某种方式集中它,它会节省大量代码......
答案 0 :(得分:8)
AuthorizeAttribute不会为您执行此操作,但您可以集中代码。当没有用户当前登录时,创建一个返回http状态代码401(未授权)的新属性。在site.master引用的JavaScript文件中,处理jQuery $ .ajaxError事件。在响应状态代码中查找http 401,并通过JavaScript重定向到您的登录页面。现在,如果当前用户未获得授权,那么通过jQuery进行的任何Ajax调用都将在此处结束。