MVC 5 Windows 身份验证重定向
MVC 5 Windows Authentication redirect
我创建了一个 MVC 5 项目并使用 Windows 身份验证。
我的问题是,每当用户的操作被操作属性 [Authorize(Roles = "Roelabc")] 拒绝时,浏览器将弹出带有 username/passwor 的登录警报。
现在我不想弹出这个窗口,我只想在用户被拒绝时将用户重定向到自定义页面。
非常感谢。
您可以创建一个名为 unathorized 的视图。在您的登录 class 中,只需重定向到该视图。你可以在 logon.cs
中使用类似的东西
if (AuthenticateUser())
{
if (CheckRulesOfBehavior())
{
AuthorizeUser();
HttpContext.Response.Redirect("~/Work/Index");
}
else
{
HttpContext.Response.Redirect("~/Errors/Unauthorized");
}
创建一个从 AuthorizeAttribute 派生的 class,将解决我的问题。
public class WindowsAuthorize : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (filterContext.Result is HttpUnauthorizedResult)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "client", filterContext.RouteData.Values[ "client" ] },
{ "controller", "Home" },
{ "action", "Contact" },
{ "ReturnUrl", filterContext.HttpContext.Request.RawUrl }
});
}
}
}
然后像这样使用它
[WindowsAuthorize(Roles = "User1")]
[HttpGet]
public ActionResult Index(string runDate = "")
{ ... }
我创建了一个 MVC 5 项目并使用 Windows 身份验证。 我的问题是,每当用户的操作被操作属性 [Authorize(Roles = "Roelabc")] 拒绝时,浏览器将弹出带有 username/passwor 的登录警报。 现在我不想弹出这个窗口,我只想在用户被拒绝时将用户重定向到自定义页面。 非常感谢。
您可以创建一个名为 unathorized 的视图。在您的登录 class 中,只需重定向到该视图。你可以在 logon.cs
中使用类似的东西if (AuthenticateUser())
{
if (CheckRulesOfBehavior())
{
AuthorizeUser();
HttpContext.Response.Redirect("~/Work/Index");
}
else
{
HttpContext.Response.Redirect("~/Errors/Unauthorized");
}
创建一个从 AuthorizeAttribute 派生的 class,将解决我的问题。
public class WindowsAuthorize : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (filterContext.Result is HttpUnauthorizedResult)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "client", filterContext.RouteData.Values[ "client" ] },
{ "controller", "Home" },
{ "action", "Contact" },
{ "ReturnUrl", filterContext.HttpContext.Request.RawUrl }
});
}
}
}
然后像这样使用它
[WindowsAuthorize(Roles = "User1")]
[HttpGet]
public ActionResult Index(string runDate = "")
{ ... }