asp.net-mvc – MVC授权属性HttpUnauthorizedResult FormsAuthen
在CodePlex上浏览MVC部分后,我注意到MVC中的[Authorize]属性在授权失败时返回HttpUnauthorizedResult()(
codeplex AuthorizeAttribute class).
在来自CodePlex的HttpUnauthorizedResult()源代码中(我不允许输入另一个URL,因为我的代表不够高,但用22929代替上面URL中的数字#266476): // 401 is the HTTP status code for unauthorized access - setting this // will cause the active authentication module to execute its default // unauthorized handler context.HttpContext.Response.StatusCode = 401; 特别是,注释描述了身份验证模块的默认未授权处理程序. 我似乎无法找到有关此默认未经授权的处理程序的任何信息.特别是,我没有使用FormsAuthentication,当授权失败时,我得到一个丑陋的IIS 401错误页面. 有没有人知道这个默认的未经授权的处理程序,特别是FormsAuthentication如何挂钩自己来覆盖它? 我正在为我的足球队写一个非常简单的应用程序,他确认或否认他们是否可以进行特定比赛.如果我在web.config中启用FormsAuthentication,重定向工作,但我没有使用FormsAuthentication,我想知道是否有解决方法. 解决方法
如果您有Reflector,请查看System.Web.Security.FormsAuthenticationModule.Init().此方法挂钩Application_EndRequest并调用OnLeave(). OnLeave()方法检查响应代码是否为HTTP 401.如果是,则模块执行重定向,而不是将401冒泡到客户端. (这个逻辑就是评论所指的’默认未经授权的处理程序’.)在你的特定情况下,ASP.NET让401冒泡到客户端,但是IIS正在拦截它并显示一个丑陋的错误页面.
您可以在Global.asax中执行非常类似的操作.创建一个方法Application_EndRequest;此方法将在应用程序提供的每个请求结束时调用.从这里,你可以做任何你想做的事.如果要检查响应是否为401并将其重定向到其他页面,可以从此处执行此操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 为什么我不能在运行时编辑我的ASP.NET Web应用程序?
- asp.net-mvc – 从Html.RouteLink生成绝对URL
- asp.net-mvc – 如何在MVC3中创建一个隐藏字段?
- asp.net-mvc-3 – 有没有办法通过html.actionlink在ASP.NET
- asp.net-mvc-4 – ASP.NET Active Directory搜索
- asp.net – 正则表达式匹配本月的前28天
- asp.net-mvc – 我的模型应该在哪里生活? Web层或数据层?
- asp.net-core – db ASP.NET Core中的临时保存密码
- 创建可扩展的ASP.Net MVC网站,而无需使用Session
- asp.net – 如何引用主域名而不用硬编码它的名字?
- asp.net-mvc – OnModelCreating与数据库配置的D
- asp.net – 无法加载文件或程序集’Microsoft.Of
- asp.net – 在IIS7上设置虚拟目录
- 在ASP.NET核心中间件中设置响应状态
- asp.net-mvc – MVC6自托管wwwroot内容返回404,I
- Azure中的ASP.NET会话状态提供程序[closed]
- asp.net-mvc-4 – 如何获取mvc中的用户IP地址
- ASP.NET MVC应用程序如何严重依赖于System.Web程
- iis-7 – 主域和可信域之间的信任关系失败
- asp.net-mvc – 我是否真的使用ninject和NHibern