为了尝试优雅地处理来自 ajax 的重定向,我遵循了此防止表单身份验证。但是,我需要能够确定某些属性是否正在装饰进行此调用的操作,因为我只想在某些情况下这样做。我可以从可以在此方法中访问的HttpRequest对象中获取此信息吗?
基本上从上面的代码中提取了我想要操作的部分:
public class SuppressFormsAuthenticationRedirectModule : IHttpModule {
private void OnPostReleaseRequestState(object source, EventArgs args) {
var context = (HttpApplication)source;
var response = context.Response;
var request = context.Request; // request is HttpRequest
if (response.StatusCode == 401 && request.Headers["X-Requested-With"] ==
"XMLHttpRequest") {
// TODO HERE: Check that the controller action contains a particular attribute
// and if so do not suppress redirect
SuppressAuthenticationRedirect(context.Context);
}
}
}
更新:可能值得注意的是,此代码保存在已编译的 DLL 项目中,然后合并到主机 MVC 应用程序中(我们无权访问)。在这种情况下,除非我可以确保它不会影响应用程序中的其余控制器,否则我实际上无法更改默认实现。