422 不可处理的实体(Laravel/React)

时间:2021-02-24 23:59:38

标签: javascript php reactjs laravel axios

我正在使用 Laravel sanctum 使用 Rest API 进行基于 Laravel 令牌的身份验证,当我使用 axios 将请求发送到服务器到“/register”路由时,它返回 422 错误代码。

const handleRegister = async (e) => {
    e.preventDefault()

    axios.defaults.withCredentials = true
    axios.get(`${hostName}/sanctum/csrf-cookie`).then((res) => {
      axios
        .post(`${hostName}/register`, {
          name: 'admin',
          email: 'admin@admin.com',
          password: 'user',
        })
        .then((res) => {
          console.log('account created')
          //history.push('/dashboard')
        })
    })
  }

注册控制器是通过使用 laravel ui --auth 包,它看起来像这样

class RegisterController extends Controller
{
    use RegistersUsers;

    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
    protected $redirectTo = RouteServiceProvider::HOME;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest');
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \App\Models\User
     */
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }
}

关于我的 CORS.php 中的更多信息,我允许来源并更新路径

   'paths' => ['api/*', 'sanctum/csrf-cookie', '/login', '/logout', '/register'],
   'supports_credentials' => true,

我设法用 tinker 创建了一个用户,我可以登录和注销,但是当我尝试注册新用户时它返回 422

1 个答案:

答案 0 :(得分:0)

422 错误代码通常意味着您有无效字段,在这种情况下,您的验证失败,如果您的表单中没有密码确认字段,则删除验证器的“已确认”部分。