错误:“未经身份验证。” Laravel

时间:2017-05-22 19:06:50

标签: php laravel authentication controller

所以我试图将用户的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);

        }

    }

2 个答案:

答案 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/*',
];
相关问题