本文介绍了在JWT Laravel中使用Authorization Header时获取token_not_provided的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

我阅读了此教程,我设法使其完美运行.唯一的问题是,当我从?token = {token_here} 切换到授权载体{token here} 时,它将停止工作.我使用的是Postman,并且在标题"字段中写了 Authorization (授权),在值中写了 Bearer {white space} {token} .我正在使用的库是 https://github.com/tymondesigns/jwt-auth

I read this tutorial and I managed to make it work perfectly. The only problem is that when I switch from ?token={token_here} to Authorization Bearer {token here} it stops working.I'm using Postman and I'm writing Authorization in the Header field and Bearer{white space}{token} in the value.The library I'm using is https://github.com/tymondesigns/jwt-auth

我在Wiki上阅读了有关Apache问题的信息,但不确定是否是我的情况.我使用PHP函数 getallheaders() 对其进行了诊断.如果我死掉并转储该函数,则表明授权标头可用.我尝试了不带.htaccess修改的情况.

I read in the Wiki about the Apache problem and I'm not sure if that's my case. I diagnosed it with PHP function getallheaders(). If I die and dump that function, it shows that the Authorization Header is available. I tried with and without the .htaccess modification.

.htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

#    RewriteCond %{HTTP:Authorization} ^(.)
#    RewriteRule . - [e=HTTP_AUTHORIZATION:%1]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

路由文件

dd(getallheaders()['Authorization']);
Route::group(['prefix' => 'api'], function() {

    Route::post('login', 'AuthenticateController@email');

    Route::group(['middleware' => ['jwt.auth', 'jwt.refresh']], function() {
        Route::post('logout', 'AuthenticateController@logout');

        Route::get('test', function() {
            return response()->json(['foo' => 'bar']);
        });
    });
});

对我要去哪里哪里有任何想法吗?

Any thoughts on where I'm going wrong?

提醒:如果我使用 http: //localhost/projects/linus/public/api/test?token = {token} .

Reminder: if I use http://localhost/projects/linus/public/api/test?token={token} it works.

推荐答案

事实证明,问题在于.htaccess文件中的标头配置在两行中都缺少*.代替

As it turns out, the problem was that the header configuration in the .htaccess file was missing a * in both lines. Instead of

RewriteCond %{HTTP:Authorization} ^(.)
RewriteRule . - [e=HTTP_AUTHORIZATION:%1]

显示为

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

特别感谢 James-Daddies .

这篇关于在JWT Laravel中使用Authorization Header时获取token_not_provided的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-06 15:50