首页 > 解决方案 > Laravel V4.1.0:401 代码“消息”:“未验证”。用于 API

问题描述

我在不使用php artisan serve 我用于Passport身份验证时调用 Laravel API 时遇到问题

当我使用它php artisan serve并使用它登录时,http://127.0.0.1:8000/api/login它工作正常,当我使用它获取令牌并获取数据时,http://127.0.0.1:8000/api/getData它也工作正常。

但是,我想让它在没有 php artisan serve. 当我尝试这样做时:

login usinghttp://127.0.0.1/Laravel/MyApp/public/index.php/api/login工作正常,当我获取令牌并使用http://127.0.0.1/Laravel/MyApp/public/index.php/api/getData它获取数据时401 code - unauthorized

我正在使用AppServ : Apache.

我搜索了 SOF 并尝试了所有建议的解决方案,但没有成功。

api.php

Route::post('/login','App\Http\Controllers\ApiAuthController@login')->name('login');
Route::post('register', 'App\Http\Controllers\ApiAuthController@register');

Route::group(['middleware'=>'auth:api','namespace'=>'App\Http\Controllers'], function () {
    Route::post('getData', 'DataController@index');
});

用户:

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;
..........
}

内核.php

protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,

             \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,

            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
    ];

古拉兹:

'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'passport',
            'provider' => 'users',
        ],
    ],

我的.htaccess内部公共目录:

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

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} ^(.+)$ 
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

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

我试图将公共目录数据复制到根文件夹并编辑.htaccess. 我也尝试.htaccess在根文件夹中创建新的,.htaccess在公共文件夹中删除和不删除,也没有运气。

这是登录: 登录

这是 php artisan serve 结果,它工作正常 php工匠服务结果

这是不使用 php artisan serve 的时候 不使用 php artisan serve 时

谢谢

标签: laravelunauthorized

解决方案


推荐阅读