asp.net-mvc – 禁止使用[授权]操作过滤器的控制器方法的浏览器
我正在使用
Windows身份验证创建Intranet站点.
也许我不是最好的方式,但是我试图通过调用一个包含Authorize action过滤器的控制器方法来加载部分视图,这样只有经过授权的人才能看到页面的那一部分.比如说,我想在页面上加载管理员工具,但前提是登录的个人是管理员. 所以在index.cshtml页面上我可能有类似的东西: @Html.Action("LoadAdminTools","ControllerName") Controller将包含以下代码: [Authorize(Roles="Admins")] public ActionResult LoadAdminTools() { return PartialView("_AdminToolsPartialView"); } 然后,包含管理控件(或其他)的部分视图将呈现给页面 – 仅当登录用户是Admins角色的一部分时. 我遇到的“问题”是,如果登录的人无权加载部分视图,浏览器会弹出登录对话框,询问用户的凭据.关闭对话框而不输入任何凭据会导致预期的结果 – 部分视图不会在页面的其余部分加载时加载.很酷,但很烦人.输入错误的凭据,您会收到401错误 – 也正如预期的那样. 如果有帮助:在IIS中,禁用匿名身份验证,启用Windows身份验证. 我的问题是:有没有办法在没有浏览器要求用户登录的情况下使用[授权]操作过滤器加载部分视图(或者真的做任何事情)?只需要获取当前登录的凭据,检查它们是否符合操作过滤器,如果有,则加载部分视图,如果没有,则不要.如果没有,是否有更好的方式来实现我想在这里完成的工作? UPDATE 美丽.我读了你发布的问题的解决方案,Mystere Man,在Controller的文件夹中创建了一个名为IntranetAuthorizeAttribute.cs的新类,抛出代码: [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method,Inherited = true,AllowMultiple = true)] public class IntranetAuthorizeAttribute : System.Web.Mvc.AuthorizeAttribute { protected override void HandleUnauthorizedRequest(System.Web.Mvc.AuthorizationContext filterContext) { if (filterContext.HttpContext.Request.IsAuthenticated) { filterContext.Result = new System.Web.Mvc.HttpStatusCodeResult(403); } else { base.HandleUnauthorizedRequest(filterContext); } } } 用我的新IntranetAuthorize过滤器替换了Authorize过滤器: [IntranetAuthorize(Roles="Admins")] public ActionResult LoadAdminTools() { return PartialView("_AdminToolsPartialView"); } 现在它加载页面就好了,没有浏览器登录对话框 – 部分视图是授权用户,没有部分视图时不是授权用户=) 谢谢! 解决方法
不幸的是,ASP.NET(以及MVC)在可能的情况下混淆了授权和身份验证.
检查此问题以获得解决方案. Why does AuthorizeAttribute redirect to the login page for authentication and authorization failures? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Asp.Net的FileUpload类实现上传文件实例
- asp.net – 如何指定javascript运行时显示ModalPopupExtend
- asp.net-mvc-3 – StringLength属性行为
- asp.net-core – AspNetCore Abstractions无法加载
- asp.net-mvc – 在Tag Helper上拥有ViewContext属性的目的是
- Asp.Net拒绝在某些页面上访问用户
- asp.net-mvc-3 – ASP.NET MVC3 – DateTime格式
- asp.net-mvc – 在ASP.Net MVC中定义自定义URL路由
- asp.net – Orchard – 从主题布局中获取内容的标题
- asp.net – IIS URL重写:强制规范主机名和HTTP到HTTPS重定
- 覆盖单个页面的ASP.NET表单身份验证
- asp.net-mvc – 如何在ASP.NET MVC中将多个对象传
- asp.net – httpCookies requireSSL在http上设置
- asp.net会员 – 自动生成的密钥不支持散列或加密
- asp.net-mvc – 在“剃刀”视图中默认一个部分
- 即使在阅读之后,ASP.NET TempData也不会被清除
- asp.net-mvc – 在MVC Razor视图页面中使用strin
- 具有Winforms,WPF和ASP.NET自由许可的开源控制库
- asp.net – 异步操作方法和IO完成端口
- asp.net-mvc – asp.net mvc多语言urls /路由