问题描述
我有以下突变:
updatePoint(id: String! data: PointInput!): Result @auth(requires: "POINT_CRUD")
用于处理此问题的AuthDirective:
class AuthDirective extends SchemaDirectiveVisitor {
visitFieldDefinition(field) {
const requiredRole = this.args.requires;
const originalResolve = field.resolve || defaultFieldResolver;
const roleChecker = new RoleChecker();
field.resolve = async function(...args) {
const context = args[2];
const isAuthorized = await roleChecker.check(context.authorization,requiredRole);
if (!isAuthorized) {
throw new AuthenticationError(`You need following role: ${requiredRole}`);
}
return originalResolve.apply(this,args);
}
}
}
我在操场上称变异为
mutation {
updatePoint(id: "poppels",data: { id: "poppels",json: "session" }) {
error
}
}
AuthDirective
在Playground的本地(http)正常运行,但是当我将其部署到AWS Lambda(https)时,似乎没有考虑带有授权令牌的标头或与其他标头发生冲突。当我在本地请求中不包含任何标头时,我会看到相同的错误:
{
"errors": [
{
"message": "One or more parameter values are not valid. The AttributeValue for a key attribute cannot contain an empty string value. Key: id","locations": [
{
"line": 2,"column": 3
}
],"path": [
"updatePoint"
],"extensions": {
"code": "INTERNAL_SERVER_ERROR","exception": {
"message": "One or more parameter values are not valid. The AttributeValue for a key attribute cannot contain an empty string value. Key: id","code": "ValidationException","time": "2020-08-12T12:13:49.683Z","requestId": "UB5MJC41BMSJABATLVQAURKDVRVV4KQNSO5AEMVJF66Q9ASUAAJG","statusCode": 400,"retryable": false,"retryDelay": 22.224996180111013,"stacktrace": [
"ValidationException: One or more parameter values are not valid. The AttributeValue for a key attribute cannot contain an empty string value. Key: id"," at Request.extractError (/var/task/node_modules/aws-sdk/lib/protocol/json.js:51:27)"," at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:106:20)"," at Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:78:10)"," at Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:688:14)"," at Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10)"," at AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12)"," at /var/task/node_modules/aws-sdk/lib/state_machine.js:26:10"," at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9)"," at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:690:12)"," at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:116:18)"
]
}
}
}
],"data": {
"updatePoint": null
}
}
有什么想法为什么会这样?是我缺少的Lambda配置,还是创建Apollo服务器的方式?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)