我创建了一个MVC 5项目并使用Windows身份验证。 我的问题是每当用户的操作被操作属性[Authorize(Roles =“Roelabc”)]拒绝时,浏览器将弹出一个包含用户名/密码的登录提醒。 现在我不希望这个弹出,我只是想如果用户被拒绝,然后重定向用户到自定义页面。 非常感谢。MVC 5 Windows身份验证重定向
0
A
回答
0
创建派生自AuthorizeAttribute的类,将解决我的问题。
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 = "")
{ ... }
0
您可以创建一个名为unathorized的视图。而在你的登录类中,只是重定向到该视图。你可以在logon.cs中使用这样的东西
if (AuthenticateUser())
{
if (CheckRulesOfBehavior())
{
AuthorizeUser();
HttpContext.Response.Redirect("~/Work/Index");
}
else
{
HttpContext.Response.Redirect("~/Errors/Unauthorized");
}
嗨,有在Windows身份验证没有登录功能。非常感谢。我通过覆盖默认的Authorize属性找到了解决方案。见下面的帖子。 – shaun2099 2015-02-12 01:16:46