首页 > 解决方案 > 如何在 CustomAuthorizeAttribute 之后禁用重定向到 /identity/account/login?

问题描述

我在 ASP.NET Core 项目中使用自定义授权系统并实现了我在控制器上设置的授权属性。

public class CustomAuthorizeAttribute : AuthorizeAttribute, IAuthorizationFilter
{
    
    void IAuthorizationFilter.OnAuthorization(AuthorizationFilterContext filterContext)
    {
        ApplicationDbContext db = (ApplicationDbContext)filterContext.HttpContext.RequestServices.GetService(typeof(ApplicationDbContext));


        if (string.IsNullOrEmpty(filterContext.HttpContext.Session.GetString("username")))
        {
            filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { area = "", controller = "AccountUser", action = "Login"}));
        }
        else
        {
            var account = db.Accounts.Where(c => c.Username.Equals(filterContext.HttpContext.Session.GetString("username")));
            CustomPrincipal cp = new CustomPrincipal(account.First());
            if (!cp.IsInRole(Roles))
            {
                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { area = "", controller = "AccountUser", action = "AccsessDenied" }));
            }
        }
    }
}

当授权用户访问此控制器时,我不需要转换到 /identity/account/login 。

如何确保在 OnAuthorization 成功执行后,重定向不是针对身份,而是针对用户访问的控制器?

标签: c#asp.net-core.net-coreasp.net-core-identity

解决方案


推荐阅读