如何在Laravel Lighthouse中无需自定义resolver为新增记录赋值user_id
你可以使用 Lighthouse 内置的@inject指令实现需求,全程无需编写自定义 resolver,也不会暴露权限风险:
type Mutation { createPost(title: String!): Post @guard @create @inject(context: "user.id", name: "user_id") }
各指令作用说明:
@guard指令会先校验当前请求是否已通过 Laravel 认证,未登录的请求会直接被拦截,避免出现user_id为空的情况,如果你的全局 schema 已经默认配置了auth guard,也可以省略该指令@inject指令会从请求上下文中取出当前登录用户的ID,直接赋值给待创建的Post模型的user_id字段,整个过程完全在服务端完成,客户端没有任何可篡改user_id的入口,从根源上避免了越权操作的风险
内容的提问来源于stack exchange,提问作者Daniel Loureiro
相关产品推荐
相关产品推荐

