我用于 GraphQL for .NET graphql 的包。但我无法理解如何在 graphql 查询或变异中使用 JWT 进行身份验证。
我读了 guide about authorization但我无法完成。
我需要 GraphQL 方面的帮助以进行 .NET 身份验证。
任何帮助将不胜感激。
谢谢
最佳答案
该指南是关于授权的。您正在寻找的步骤是身份验证,并且由于可以使用 ASP.Net API Controller 实现 graphql,因此您可以像使用任何 Controller 一样实现 JWT 身份验证。
这是一个使用 Authorize 属性的示例 grapql Controller 。但是,您可以使用过滤器或如果您想要完全控制自定义中间件来实现此功能。
[Route("api/[controller]")]
[ApiController]
[Authorize]
public class GraphQLController : ControllerBase
{
private readonly IDocumentExecuter executer;
private readonly ISchema schema;
public GraphQLController(IDocumentExecuter executer, ISchema schema)
{
this.executer = executer;
this.schema = schema;
}
[HttpPost]
public async Task<ActionResult<object>> PostAsync([FromBody]GraphQLQuery query)
{
var inputs = query.Variables.ToInputs();
var queryToExecute = query.Query;
var result = await executer.ExecuteAsync(o => {
o.Schema = schema;
o.Query = queryToExecute;
o.OperationName = query.OperationName;
o.Inputs = inputs;
o.ComplexityConfiguration = new GraphQL.Validation.Complexity.ComplexityConfiguration { MaxDepth = 15};
o.FieldMiddleware.Use<InstrumentFieldsMiddleware>();
}).ConfigureAwait(false);
return this.Ok(result);
}
}
public class GraphQLQuery
{
public string OperationName { get; set; }
public string Query { get; set; }
public Newtonsoft.Json.Linq.JObject Variables { get; set; }
}
在 Startup.cs 中,我配置了 JWT 不记名 token 身份验证。
希望这可以帮助。
关于authentication - 使用 JWT 使用 Asp.net 核心进行 GraphQL 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50628455/