ASP.NET Core Identity Authorization using Parameter for Team Membership

前端 未结 3 681
长发绾君心
长发绾君心 2021-02-03 13:07

I have an application with tables like this:

  • User (ASP.NET Core Identity)
  • Team
  • UserTeam (many-to-many join table)

Users can be mem

3条回答
  •  刺人心
    刺人心 (楼主)
    2021-02-03 13:54

    In Net Core 3, use the following answer above, https://stackoverflow.com/a/48390808/14727392 with comment listed "context.Resource as AuthorizationFilterContext" returning null in ASP.NET Core 3.0

    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, CookieOrTokenAuthorizationRequirement requirement)
    {
        if (context.Resource is Endpoint endpoint)
        {
            if endpoint.Metadata.OfType().Any(filter=> filter.Policy == "HasAdminTeamAccess")
    
            var teamId = _httpContextAccessor.HttpContext.GetRouteData().Values["teamId"]
            if (context.User.IsTeamAdmin(teamId))
            {
                context.Succeed(requirement);
            }
            else
            {
                context.Fail();
            }
        }
    }
    

提交回复
热议问题