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教程-存在有挂>>您好:软件加13670430...
热点推荐"美猴王辅助... 热点推荐"美猴王辅助"开挂(插件)辅助插件有挂方法-安装教程;无需打开直接搜索薇:136704302...
详细辅助“挂是真的假的”开挂(... 详细辅助“挂是真的假的”开挂(神器)辅助神器大神讲解-讲解有挂;无需打开直接搜索加(薇:136704...
透视规律"微乐小程序... 透视规律"微乐小程序游戏辅助器脚本官网"开挂(插件)辅助插件有挂规律-微扑克教程《详细加薇13670...
三分钟辅助“越乡游金花辅助”开... 越乡游金花辅助是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微信...
透视黑科技"米娱gm... 透视黑科技"米娱gm游戏辅助工具"开挂(插件)辅助插件有挂方式-透明教程 >>您好:软件加薇1367...
三分钟辅助“pokemmo手机... 大家好,今天小编来为大家解答pokemmo手机版脚本这个问题咨询软件客服可以免费测试直接加微信(13...
一秒答解"情怀麻烦将... 一秒答解"情怀麻烦将关春天辅助"开挂(工具)辅助工具有挂方略-新2026教程;无需打开直接搜索加薇1...
十分钟辅助“掌中乐游戏通用辅助... 大家好,今天小编来为大家解答掌中乐游戏通用辅助器这个问题咨询软件客服可以免费测试直接加微信(1367...