asp.net – 绕过表单身份验证自动重定向到登录,如何?
我正在使用asp.net-mvc部署到iis6编写应用程序.我正在使用表单身份验证.通常当用户尝试在没有适当授权的情况下访问资源时,我希望将它们重定向到登录页面. FormsAuth让我很容易做到这一点.
问题:现在我有一个控制台应用程序访问的操作.什么是让这个动作响应w /状态401而不是将请求重定向到登录页面的最快方法? 我希望控制台应用程序能够对此401 StatusCode做出反应,而不是透明.我还想保留默认值,将未经授权的请求重定向到登录页面行为. 注意:作为测试我将其添加到我的global.asax并且它没有绕过表单身份验证: protected void Application_AuthenticateRequest(object sender,EventArgs e) { HttpContext.Current.SkipAuthorization = true; } @Dale和Andy 我正在使用MVC预览4中提供的AuthorizeAttributeFilter.这将返回一个HttpUnauthorizedResult.这个结果正确地将statusCode设置为401.正如我所理解的那样,问题是asp.net正在拦截响应(因为它被调为401)并重定向到登录页面而不是让它通过.我想绕过某些网址拦截. 解决方法
好的,我解决了这个问题.我做了一个自定义ActionResult(HttpForbiddenResult)和自定义ActionFilter(NoFallBackAuthorize).
为了避免重定向,HttpForbiddenResult使用状态代码403标记响应.FormsAuthentication不会捕获使用此代码的响应,因此有效地跳过了登录重定向. NoFallBackAuthorize过滤器检查用户是否被授权,与包含的授权过滤器非常相似.它的不同之处在于它在拒绝访问时返回HttpForbiddenResult. HttpForbiddenResult非常简单: public class HttpForbiddenResult : ActionResult { public override void ExecuteResult(ControllerContext context) { if (context == null) { throw new ArgumentNullException("context"); } context.HttpContext.Response.StatusCode = 0x193; // 403 } } 似乎无法跳过FormsAuthenticationModule中的登录页面重定向. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-4 – 如何在视图页面上缩小脚本块内的JavaScri
- 个人ASP.NET开源
- 当调用ASP.NET System.Web.HttpResponse.End()时,当前线程中
- asp.net-mvc-4 – 如何解决错误“安全透明方法尝试”System
- asp.net – HttpRuntime Cache和HttpContext Cache有什么区
- asp.net-mvc – MVC OAUTH VS2012模板,在哪里输入redirect_
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automap
- 如何使用ASP.NET MVC中的正确密钥向ModelState添加错误?
- vsdoc文件是否适用于vbscript?
- asp.net-mvc – 需要为ASP.NET mvc部署哪些文件?