【发布时间】:2020-01-10 04:30:29
【问题描述】:
根据 Apollo 文档添加自定义指令如下:
class isAuth extends SchemaDirectiveVisitor {
// field defination for resolving
// directive.
public visitFieldDefinition(field) {
// overspreading.
const { resolve = defaultFieldResolver } = field;
// resolve field.
field.resolve = async function(__, Context) {
// check if Context
// contain's user object
// which was resolved by jwt.
if(!Context.user){
throw new Error('User not authenticated');
}
// resolve return awaited resolve call.
return await resolve.apply(this, __);
};
}
}
但使用它会导致意外的令牌错误。
class isAuth extends SchemaDirectiveVisitor {
// field defination for resolving
// directive.
visitFieldDefinition(field) { <---- Removed Public keyword
// overspreading.
const { resolve = defaultFieldResolver } = field;
// resolve field.
field.resolve = async function(__, Context) {
// check if Context
// contain's user object
// which was resolved by jwt.
if(!Context.user){
throw new Error('User not authenticated');
}
// resolve return awaited resolve call.
return await resolve.apply(this, __);
};
}
}
这将起作用,但不适用于 apollo 包。
请注意:Apollo 是 graphql 库
【问题讨论】:
标签: javascript node.js apollo