【发布时间】:2021-05-21 12:29:29
【问题描述】:
我正在使用 lighthouse 库为我的 Laravel 项目开发 GraphQL 模式。但是在尝试验证用户确认密码时遇到了问题。当我尝试注册用户时会出现此问题。为我的用户考虑以下类型
type User {
id: ID
first_name: String!
last_name: String!
email: String!
password: String!
phone_number: String
avatar: String
email_verified_at: DateTime
}
我尝试使用以下突变注册我的用户
extend type Mutation {
createUser(input: CreateUser @spread): User! @create
}
我的 CreateUser 输入如下所示
input CreateUser {
first_name: String!
last_name: String!
email: String! @rules(apply: ["email"])
password: String! @rules(apply: ["confirmed"])
phone_number: String
}
我收到验证失败的预期错误:“字段 [createUser] 验证失败”,这很好。但是当我尝试在我的请求中添加password_confirmation 时,会遇到以下错误:"Field \"password_confirmation\" is not defined by type CreateUser."。那是我想我应该将password_confirmation 字段添加到 CreateUser 输入的时候。但是当我尝试验证通过但我得到一个数据库错误,password_confirmation 是一个未定义的列。这是有道理的,因为它不在我的迁移中,而且我认为验证密码不应该是必需的。
tldr;如何在 lighthouse @rules 指令中使用 laravel confirmed 验证
【问题讨论】:
-
这是个好问题。我想知道自己。期待答案。也许解决方法是
same:password规则? laravel.com/docs/8.x/validation#rule-same -
那是否还需要我将 password_confirmation 添加到我的迁移中?
-
没必要,我猜。您可以使用验证器:lighthouse-php.com/5.2/security/…
-
这听起来很有希望,我今天晚些时候试试。猜猜我会专注于使用 @rules 指令
-
这仍然是一个好问题。我的理解是,当应用确认规则时,Lighthouse 应该自动为客户端提供另一个属性。我不确定这样的事情是否已经实施。否则这将是一个非常好的功能请求!
标签: laravel laravel-lighthouse