错误:“未经身份验证。”拉拉维尔

Posted

技术标签:

【中文标题】错误:“未经身份验证。”拉拉维尔【英文标题】:error: "Unauthenticated." Laravel 【发布时间】:2017-10-22 13:20:27 【问题描述】:

所以我试图将用户的 id 存储在 user_id 中,但 laravel 给出了错误:

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

当我的用户在我的后台登录时。

这是我的 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);

        

    

【问题讨论】:

【参考方案1】:

web 中间件组实现了VerifyCSRFToken 中间件。这要求对该中间件组内每个路由的每个请求都传递一个token

您的请求中缺少令牌。

如果这是一个标准的 html 表单,那么只需在其中添加以下内容:

 csrf_field() 

如果这是一个 ajax 请求,您可以使用以下内容:

token: window.Laravel.csrfToken

如果未设置,则将其添加到布局模板的头部:

<script>
    window.Laravel = 
        csrfToken: 'csrf_token()'
    
</script>

【讨论】:

【参考方案2】:

我发现您忘记从 CSRF 保护中排除 URI。

这应该可以节省您的时间:

protected $except = [
    'stripe/*',
];

【讨论】:

以上是关于错误:“未经身份验证。”拉拉维尔的主要内容,如果未能解决你的问题,请参考以下文章

获取用户数据时出现未经身份验证的错误

Laravel 5.3 + Passport:总是未经身份验证的错误

S3 Transfer Manager 示例显示错误:不支持未经身份验证的访问

在 Apollo 中处理未经身份验证的响应

Laravel 未经身份验证无触发

Google API未经身份验证的错误