我正在使用 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
答案 0 :(得分:0)
422 错误代码通常意味着您有无效字段,在这种情况下,您的验证失败,如果您的表单中没有密码确认字段,则删除验证器的“已确认”部分。