所以我试图将用户的id存储在user_id中,但是laravel会给出错误:
{error:“Unauthenticated。”}
当我的用户登录我的后台时。
这是我的routesApi.php
Auth::routes();
Route::group([
'namespace' => 'Api',
'prefix' => 'api/v1',
'middleware' => 'web'
], function () {
$options = [
'except' => [
'create',
'edit',
]
];
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE');
header('Access-Control-Allow-Headers: Content-Type, X-Auth-Token, Origin, Authorization, X-CSRF-TOKEN ');
Route::middleware('auth')->post('optionelections', function (Request $request) {
return $request->user();
});
});
这是我的控制器中的商店功能:
public function store(Request $request)
{
$optionElection = new OptionElection();
$optionElection->user_id = Auth::id();
$optionElection->option = Auth::name();
$optionElection->votes = 0;
$optionElection->election_id = $request['election_id'];
$optionElection->accepted = 0;
if ($optionElection->save()) {
return response()
->json($optionElection);
}
}
答案 0 :(得分:2)
web
中间件组实现VerifyCSRFToken
中间件。这要求对此中间件组内的每个路由的每个请求都传递token
。
您的请求中缺少令牌。
如果这是标准HTML表单,则只需在其中添加以下内容:
{{ csrf_field() }}
如果这是ajax请求,您可以使用以下内容:
token: window.Laravel.csrfToken
如果未设置,则将其添加到布局模板的开头:
<script>
window.Laravel = {
csrfToken: '{{csrf_token()}}'
}
</script>
答案 1 :(得分:1)
我认为你忘了从CSRF保护中排除URI。
这可以节省你的一天:
protected $except = [
'stripe/*',
];