Model view controller MVC5Windows身份验证重定向
我创建了一个MVC5项目,并使用Windows身份验证。 我的问题是,每当用户的操作被操作属性[Authorize(Roles=“roelab”)]拒绝时,浏览器就会弹出一个带有用户名/passwor的登录警报。 现在我不希望出现这个弹出窗口,我只希望如果用户被拒绝,那么将用户重定向到自定义页面。Model view controller MVC5Windows身份验证重定向,model-view-controller,Model View Controller,我创建了一个MVC5项目,并使用Windows身份验证。 我的问题是,每当用户的操作被操作属性[Authorize(Roles=“roelab”)]拒绝时,浏览器就会弹出一个带有用户名/passwor的登录警报。 现在我不希望出现这个弹出窗口,我只希望如果用户被拒绝,那么将用户重定向到自定义页面。 非常感谢。您可以创建一个名为unathorized的视图。在登录类中,只需重定向到该视图。您可以在logon.cs中使用类似的内容 if (AuthenticateUser()) {
非常感谢。您可以创建一个名为unathorized的视图。在登录类中,只需重定向到该视图。您可以在logon.cs中使用类似的内容
if (AuthenticateUser())
{
if (CheckRulesOfBehavior())
{
AuthorizeUser();
HttpContext.Response.Redirect("~/Work/Index");
}
else
{
HttpContext.Response.Redirect("~/Errors/Unauthorized");
}
创建一个从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 = "")
{ ... }
您好,windows身份验证中没有登录功能。还是谢谢你。我通过覆盖默认的Authorize属性找到了解决方案。见下文。