我正在用Vuejs和Laravel建造SPA,我安装了laravel密室来验证用户的令牌。
Api.php
Route::post('/teacher/login', 'Teacher\RegisterController@login')->middleware('auth:sanctum');Login.Vue
login(){
axios.get('/sanctum/csrf-cookie').then(response => {
this.form.post('api/teacher/login')
.then( response => {
console.log( response );
})
.catch( error => {
console.log( error );
})
});
}自定义控制器
public function login(Request $request){
$credentials = $request->only('email', 'password');
if(Auth::attempt($credentials)){
return response()->json(Auth::user(), 200);
}
}我在没有加密中间件的情况下对此进行了检查--它成功地记录了用户的日志,但是我在路由中添加了中间件,它说您的请求未经身份验证。我按照官方的Laravel-7文档实现了一切,我不知道为什么它说未经认证,附加IMG以获得更多细节。



发布于 2021-04-12 03:42:23
确保从csrf-cookie获得的XSRF令牌或XSRF令牌被附加到api/teacher/login的header中。对于Axios,您可以用
axios.defaults.headers.common['X-XSRF-TOKEN'] = <the x-xsrf-token from csrf-cookie request>确保用端口号在SANCTUM_STATEFUL_DOMAINS中声明.env。您也可以包含多个域。SANCTUM_STATEFUL_DOMAINS='your-domain.test:8080,本地主机:8000‘
如果不这样做,您将遇到Session store not set问题,因为中间件EnsureFrontendRequestsAreStateful正在检查请求是否来自前端。如果它是正面的,那么它会在上面附加以下的中间件。
https://stackoverflow.com/questions/66710206
复制相似问题