如何在Ajax和部分视图中最好地使用[Authorize]属性?

时间:2009-04-13 07:19:44

标签: asp.net-mvc ajax asp.net-ajax

我准备在通过Ajax返回部分视图的Actions上使用[Authorize];但是我没有得到我想要的行为(尽管它是我期望的行为)。

这似乎是一个长镜头;但是,有没有办法将此属性扩展为“突破”AJAX调用并将整个页面重定向到登录屏幕? (而不是将登录屏幕返回到我设置UpdateTargetId的任何位置?)

我想我已经掌握了如何在每个特定的Ajax调用上执行此操作,但如果我可以以某种方式集中它,它会节省大量代码......

1 个答案:

答案 0 :(得分:8)

AuthorizeAttribute不会为您执行此操作,但您可以集中代码。当没有用户当前登录时,创建一个返回http状态代码401(未授权)的新属性。在site.master引用的JavaScript文件中,处理jQuery $ .ajaxError事件。在响应状态代码中查找http 401,并通过JavaScript重定向到您的登录页面。现在,如果当前用户未获得授权,那么通过jQuery进行的任何Ajax调用都将在此处结束。