ASP.NETCore自定义授权一直允许用户访问
创始人
2024-09-18 18:00:20
0

要解决此问题,需要确保您的自定义授权服务返回正确的授权结果,而不是一直允许用户访问。

以下是一个示例自定义授权服务,它仅允许经过身份验证的用户访问具有特定策略的控制器:

public class CustomAuthorizationService : IAuthorizationService
{
    private readonly IHttpContextAccessor _httpContextAccessor;

    public CustomAuthorizationService(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
    }

    public async Task AuthorizeAsync(ClaimsPrincipal user, object resource, IEnumerable requirements)
    {
        var httpContext = _httpContextAccessor.HttpContext;

        if (httpContext.User.Identity.IsAuthenticated)
        {
            var result = await httpContext.AuthorizeAsync(requirements, resource);

            if (result.Succeeded)
            {
                return AuthorizationResult.Success();
            }
        }

        return AuthorizationResult.Failed();
    }
}

在上述示例中,我们注入了IHttpContextAccessor,以便我们可以访问当前用户和HTTP上下文。然后,我们检查用户是否已经身份验证,如果是,则调用AuthorizeAsync方法,以确保用户满足给定的要求。如果AuthorizeAsync返回成功,则我们返回AuthorizationResult.Success(),否则返回AuthorizationResult.Failed()。

要在应用程序中使用此自定义授权服务,请将其作为AddAuthorization的参数之一添加到您的Startup.cs文件中的ConfigureServices方法中:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();

    services.AddHttpContextAccessor();

    services.AddSingleton();

    services.AddAuthorization(options =>
    {
        options.AddPolicy("MyPolicy", policy =>
        {
            policy.RequireAuthenticatedUser();
            policy.RequireClaim("MyClaim");
        });
    });
}

然后,在您的控制器或动作方法上使用Authorize特性,并指定您的策略名称:

[Authorize(Policy = "MyPolicy")]
public class MyController : Controller
{
    // ...
}

相关内容

热门资讯

重大通报!广东雀神小程序打牌技... 重大通报!广东雀神小程序打牌技巧(辅助挂)原来真的有挂(竟然有挂)-哔哩哔哩;广东雀神小程序打牌技巧...
指导大家!德州ai智能辅助是什... 您好,德州ai智能这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款...
一分钟了解!小鸟历险记广元长牌... 一分钟了解!小鸟历险记广元长牌外挂(辅助挂)的确真的有挂(有挂详细)-哔哩哔哩;小鸟历险记广元长牌外...
三分钟普及!wpk透视辅助合作... 三分钟普及!wpk透视辅助合作(透视)透视辅助((2024已更新))(哔哩哔哩);小薇(透视辅助)致...
透视数据!雀神小程序开挂(辅助... 透视数据!雀神小程序开挂(辅助挂)竟然是真的有挂(有挂秘诀)-哔哩哔哩是由北京得雀神小程序开挂黑科技...
实测分享!aapoker俱乐部... aapoker赢率提升策略‌;实测分享!aapoker俱乐部!的确真的有挂((2020已更新))(哔...
重大发现!云霄麻将辅牌器购买(... 重大发现!云霄麻将辅牌器购买(辅助挂)果真是真的有挂(真的有挂)-哔哩哔哩1、让任何用户在无需AI插...
五分钟科普!wopoker辅助... 自定义poker系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管你是想...
重大发现!雀神小程序免费玩一次... 重大发现!雀神小程序免费玩一次(辅助挂)确实真的有挂(有挂技术)-哔哩哔哩是一款可以让一直输的玩家,...
记者发布!来打红中麻将有挂吗(... 《记者发布!来打红中麻将有挂吗(辅助挂)竟然是真的有挂(确实有挂)-哔哩哔哩》 来打红中麻将有挂吗软...