在我注销并想要重新登录后,我收到以下错误:
消息:“CSRF 令牌不匹配。”,异常:“Symfony\Component\HttpKernel\Exception\HttpException”
我定制了一些部分,LoginController
所以它可能与此有关。我尝试在未修改的情况下进行搜索,LoginController
但找不到任何东西。我vuex
商店的登录功能:
login({ commit }, user) {
return new Promise((resolve, reject) => {
axios({ url: '/login', data: user, method: 'POST' })
.then(response => {
const user = response.data.user
commit('auth_success', user)
resolve(response)
})
.catch(error => {
commit('auth_error')
reject(error)
})
})
},
我的注销功能,也来自我的vuex
商店:
logout({ commit }) {
return new Promise((resolve, reject) => {
axios({ url: '/logout', method: 'POST' })
.then(() => {
commit('logout')
localStorage.removeItem('user');
resolve()
})
.catch(error => {
reject(error)
})
})
},
这是我的登录控制器:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = RouteServiceProvider::HOME;
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function login(Request $request)
{
if ($this->attemptLogin($request)) {
$request->session()->regenerate();
return $this->authenticated($request, $this->guard()->user());
}
}
protected function attemptLogin(Request $request)
{
return $this->guard()->attempt(['email' => $request->json('email'), 'password' => $request->json('password')]);
}
protected function authenticated(Request $request, $user)
{
if ($user) {
return response()->json([
'user' => $user
], 200);
} else {
return response('', 400);
}
}
public function logout(Request $request)
{
$this->guard()->logout();
if ($request->session()->invalidate()) {
return response('', 200);
}
}
}
我错过了什么吗?
更新:
如果我刷新页面,我不会再收到错误消息。这可能与我有一个使用vue-router
. 所以我想我需要刷新页面以避免 419 错误。但这不是一个理想的情况。有人有这方面的经验吗?