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-mvc – 在ASP.NET MVC 1.0中在HTTP和HTTPS之间切换
- asp.net-mvc – ViewModel中的ASP.NET MVC SelectList
- asp.net – 如何在mvc中使用多个选择4?
- asp.net-mvc – ASP MVC3 – 如何从数据库加载页面的自定义
- asp.net-mvc – 如何通过属性过滤器在MVC中设置Razor布局?
- asp.net-mvc – 如何降级Visual Studio 2012中的Entity Fra
- asp.net – 检查Active Directory密码是否与cookie不同
- ASP.Net Core Web Api中的异步视频流不起作用
- asp.net-mvc – Parallel Blob上传间歇性抛出404 Bad Reque
- asp.net-mvc – MVC DropDownList SelectedValue不正确显示
- asp.net-mvc – MVC4异步和并行执行
- asp.net-mvc – NullReferenceException ASP.NET
- asp.net-mvc – 部署的ASP.NET MVC 4项目不会运行
- asp.net – 如何使用占位符属性与Html.EditorFor
- asp.net-mvc-4 – 全局过滤器MVC 4的执行顺序是什
- asp.net-mvc – ASP.NET MVC快速启动 – 一站式教
- asp.net – 为会话值的关键名称创建枚举是一个好
- asp.net-mvc – 可以在运行时更改数据注释吗? (
- asp.net – 当用户未通过身份验证时如何处理ajax
- asp.net-mvc – 如何使用Entity Framework和Memb
