asp.Net   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了asp.net-mvc – 仅当不使用角色时,如何重定向[Authorize]到loginUrl?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想[授权]重定向到loginUrl,除非我也使用角色,例如[Authorize(Roles =“Admin”)]。在这种情况下,我想简单地显示一个说明用户没有授权的页面。

该怎么办

解决方法

这是从我修改的AuthorizeAttribute实现的代码;我把它命名为SecurityAttribute。我唯一改变的是OnAuthorization方法,我添加了一个额外的字符串属性为Url重定向到一个未经授权的页面:
// Set default Unauthorized Page Url here
private String _notifyUrl = "/Error/Unauthorized"; 

public String NotifyUrl { 
    get { return _notifyUrl; } set { _notifyUrl = value; } 
}

public override void OnAuthorization(AuthorizationContext filterContext) {
    if (filterContext == null) {
        throw new ArgumentNullException("filterContext");
    }

    if (AuthorizeCore(filterContext.httpContext)) {
        httpCachePolicyBase cachePolicy =
            filterContext.httpContext.Response.Cache;
        cachePolicy.SetProxymaxAge(new TimeSpan(0));
        cachePolicy.AddValidationCallBACk(CacheValidateHandler,null);
    }

    /// This code added to support custom Unauthorized pages.
    else if (filterContext.httpContext.User.Identity.IsAuthenticated)
    {
        if (NotifyUrl != null)
            filterContext.Result = new RedirectResult(NotifyUrl);
        else
           // Redirect to Login page.
            HandleUnauthorizedrequest(filterContext);
    }
    /// End of additional code
    else
    {
         // Redirect to Login page.
        HandleUnauthorizedrequest(filterContext);
    }
}

您以与原始AuthorizeAttribute相同的方式调用它,除了有一个额外的属性可以覆盖未经授权的页面网址:

// Use custom Unauthorized page:
[Security (Roles="Admin,User",NotifyUrl="/UnauthorizedPage")]

// Use default Unauthorized page:
[Security (Roles="Admin,User")]

大佬总结

以上是大佬教程为你收集整理的asp.net-mvc – 仅当不使用角色时,如何重定向[Authorize]到loginUrl?全部内容,希望文章能够帮你解决asp.net-mvc – 仅当不使用角色时,如何重定向[Authorize]到loginUrl?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。