GraphQLAuthorize属性未触发[graphql]

GraphQLAuthorize属性未触发[graphql],graphql,Graphql,我正在研究qraphQL api,并尝试在GraphQL.Server.authorization.AspNetCore中使用授权属性GraphQLAuthorize;我已在startup.cd configureService中创建了策略,但GraphQLARGATURE属性无法识别该策略 [GraphQLAuthorize(Policy=“AUTHORIZED”)]不工作。 授权人(“授权人”)正在工作时 using GraphQL.Repository.GraphQL.Types; usi

我正在研究qraphQL api,并尝试在GraphQL.Server.authorization.AspNetCore中使用授权属性GraphQLAuthorize;我已在startup.cd configureService中创建了策略,但GraphQLARGATURE属性无法识别该策略

[GraphQLAuthorize(Policy=“AUTHORIZED”)]不工作。 授权人(“授权人”)正在工作时

using GraphQL.Repository.GraphQL.Types;
using GraphQL.Repository.Repositories;
using GraphQL.Types;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;
using GraphQL.Server.Authorization.AspNetCore;

namespace GraphQL.Repository.GraphQL
{
    [GraphQLAuthorize(Policy = "AUTHORIZED")]
    public class MenuQuery : ObjectGraphType
    {
        public MenuQuery(MenuRepository menuRepository)
        {
            Field<ListGraphType<NavigationMenuType>>(
                "NavigationMenu",
                arguments: new QueryArguments(new QueryArgument<NonNullGraphType<IdGraphType>> { Name = "applicationId" }),
                resolve: context =>
                {
                    var user = (ClaimsPrincipal)context.UserContext;

                    var applicationId = context.GetArgument<int>("applicationId");
                    return menuRepository.GetNavigationMenus(applicationId);
                });
        }
    }
}
使用GraphQL.Repository.GraphQL.Types;
使用GraphQL.Repository.Repositories;
使用GraphQL.Types;
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用System.Security.Claims;
使用系统文本;
使用System.Threading.Tasks;
使用GraphQL.Server.Authorization.AspNetCore;
命名空间GraphQL.Repository.GraphQL
{
[GraphQLAuthorize(Policy=“AUTHORIZED”)]
公共类MenuQuery:ObjectGraphType
{
公共菜单查询(MenuRepository MenuRepository)
{
场(
“导航菜单”,
参数:新的QueryArguments(新的QueryArgument{Name=“applicationId”}),
解析:上下文=>
{
var user=(ClaimsPrincipal)context.UserContext;
var applicationId=context.GetArgument(“applicationId”);
return menuRepository.GetNavigationMenus(applicationId);
});
}
}
}
//startup.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
//using GraphQL;
using GraphQL.Server;
using Microsoft.EntityFrameworkCore;
using GraphQL.Repository.Entities;
using GraphQL.Repository.Repositories;
using GraphQL.Repository.GraphQL;
using GraphQL.Repository.GraphQL.Types;
using Microsoft.Extensions.DependencyInjection.Extensions;
using GraphQL.Server.Ui.GraphiQL;
using GraphQL.Server.Ui.Playground;

namespace GraphQL.Api
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<MenuManagementDevContext>(options =>
              options.UseSqlServer(Configuration["ConnectionStrings:CarvedRockContext"]));

            services.AddScoped<MenuRepository>();
            services.AddScoped<MenuQuery>();

            services.AddScoped<NavigationMenuType>();
            services.AddScoped<RoleNavigationMenuType>();
            services.AddScoped<RoleType>();

            services.AddScoped<IDependencyResolver>(s => new FuncDependencyResolver(s.GetRequiredService));
            services.AddScoped<MenuSchema>();

            services.AddGraphQL(o => { o.ExposeExceptions = true; })
                .AddGraphQLAuthorization(options =>
                {
                    options.AddPolicy("AUTHORIZED", p => p.RequireAuthenticatedUser());
                })
                .AddGraphTypes(ServiceLifetime.Scoped).AddUserContextBuilder(httpContext => httpContext.User)
                .AddDataLoader()
                .AddWebSockets();

            services.AddCors();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseCors(builder =>
                builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());

            app.UseWebSockets();
            app.UseGraphQLWebSockets<MenuSchema>("/graphql");
            app.UseGraphQL<MenuSchema>();
            app.UseGraphiQLServer(new GraphiQLOptions());
            app.UseGraphQLPlayground(new GraphQLPlaygroundOptions());


        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Threading.Tasks;
使用Microsoft.AspNetCore.Builder;
使用Microsoft.AspNetCore.Hosting;
使用Microsoft.AspNetCore.Mvc;
使用Microsoft.Extensions.Configuration;
使用Microsoft.Extensions.DependencyInjection;
//使用GraphQL;
使用GraphQL.Server;
使用Microsoft.EntityFrameworkCore;
使用GraphQL.Repository.Entities;
使用GraphQL.Repository.Repositories;
使用GraphQL.Repository.GraphQL;
使用GraphQL.Repository.GraphQL.Types;
使用Microsoft.Extensions.DependencyInjection.Extensions;
使用GraphQL.Server.Ui.GraphiQL;
使用GraphQL.Server.Ui.playder;
名称空间GraphQL.Api
{
公营创业
{
公共启动(IConfiguration配置)
{
配置=配置;
}
公共IConfiguration配置{get;}
//此方法由运行时调用。请使用此方法将服务添加到容器中。
public void配置服务(IServiceCollection服务)
{
services.AddDbContext(选项=>
使用SQLServer(配置[“ConnectionString:CarvedRockContext]”);
services.addScope();
services.addScope();
services.addScope();
services.addScope();
services.addScope();
AddScoped(s=>new FuncDependencyResolver(s.GetRequiredService));
services.addScope();
AddGraphQL(o=>{o.exposeeexceptions=true;})
.AddGraphQLAuthorization(选项=>
{
options.AddPolicy(“AUTHORIZED”,p=>p.RequireAuthenticatedUser());
})
.AddGraphTypes(ServiceLifetime.Scoped).AddUserContextBuilder(httpContext=>httpContext.User)
.AddDataLoader()
.AddWebSockets();
services.AddCors();
}
//此方法由运行时调用。请使用此方法配置HTTP请求管道。
公共无效配置(IApplicationBuilder应用程序,IHostingEnvironment环境)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors(builder=>
builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
app.UseWebSockets();
app.UseGraphQLWebSockets(“/graphql”);
app.UseGraphQL();
UseGraphiQLServer(新的GraphiQLOptions());
app.UseGraphQLPlayground(新的GraphQLPlaygroundOptions());
}
}
}
任何帮助都将不胜感激