2012-08-01 134 views
3

我有一个控制器操作,从客户端上的jquery方法调用并返回JSON。在某些情况下,我可能需要从此操作中返回401。只要在web.config中将PreserveLoginUrl设置为true,标准MVC就会创建一个将用户重定向到登录页面的响应,如果我试图发出401。我希望能够在某些操作上覆盖PreserveLoginUrl,以便将真实的401发送给客户端。但是,对于大多数操作,PreserveLoginUrl = true是正确的行为,所以我希望维护它。PreserveLoginUrl覆盖MVC 4

有关如何在保持PreserveLoginUrl = true功能的同时完成一个真正的401而不需重定向一些操作的任何建议?现在,我将返回一个400而不是401作为解决方法,但这不是真正的正确行为,因为我确实想发出NOT Authorized。

+0

只是出于好奇...没有重定向到登录页面的情况下用401响应的用例是什么?我能想到的唯一情况是WebApi操作,这些操作被用户控制的浏览器以外的其他东西调用,我相信这些操作默认情况下不会重定向到登录页面。 – 2012-09-06 22:14:41

回答

0

改为使用403响应,并让您的javascript/jquery方法按照您的要求做,如果响应是403.在ASP.net中重写401响应的内置行为是非常困难的。