我正在 SPA 中创建授权,
在服务器上 - Laravel + sanctum
在客户端 - Vue + Axios
我想防范 CSRF,为此我安装了 Sanctum 包
在 app/Http/Kernel.php
文件中添加了中间件
'api' => [
EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
在 routes/api.php
文件中
已创建路线 Route::post ('/register', [AuthController::class, 'register']);
在控制器中我添加了一个简单的注册验证
public function register(Request $request)
{
$request->validate([
'name' => 'required|string',
'email' => 'required|email:rfc,dns|string|unique:users,email',
'password' => 'required|string|confirmed',
]);
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt($request->password),
]);
}
在我提交表单后,数据无缝添加到数据库中并创建了用户。
尽管 Sanctum 建议我另外发送带有 XSRF-TOKEN
的 cookie。否则,应该向我返回一个错误,即没有 HTTP 状态为 419 的 CSRF 令牌。
但是没有错误并且添加了数据
浏览器中没有保存的cookies,我检查,清理,隐身打开,尝试通过Postman发送请求
我想看到这个错误,但我没有得到它
告诉我缺少什么?
答案 0 :(得分:0)
我解决了这个问题。 我忘了加到 axios
axios.defaults.withCredentials = true;
并在cors.php
'supports_credentials' => true,
添加这些设置后,一切正常