Laravel Passport API状态代码:403禁止

时间:2017-10-30 05:51:21

标签: php laravel api cors laravel-5.4

我正在开发一个Ionic Mobile App,它通过REST API连接到Laravel中的服务器。我使用了Laravel护照包并配置了一些关于授权令牌如何在API上工作的东西。所以我在Ionic应用程序的提供程序上编写了一些代码,我为移动用户提供了这个登录功能,通过API从服务器登录,但它一直告诉我这个错误:

  

状态代码:403 Forbidden

这似乎是服务器端错误,我没有权限访问此资源。正确?

因此,服务器理解来自Ionic端的请求,但拒绝服务器或禁止服务器。

我使用CORS Allow-Control-Origin将Ionic应用程序连接到Laravel。

但是,当我尝试使用POSTMAN执行POST请求时,Laravel护照包提供了所有授权类型和客户端密钥,它成功地通过oauth为我提供了令牌类型的承载,访问令牌和刷新令牌。

以下是我的中间件Cors中的代码

<?php

namespace App\Http\Middleware;

use Closure;

class Cors
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        return $next($request)
        ->header('Access-Control-Allow-Origin', '*')
        ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
    }
}

这是我的api路线中的代码:

<?php

use Illuminate\Http\Request;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

Route::middleware('auth:api', 'cors')->get('/user', function (Request $request) {
    return $request->user();
});


Route::resource('departments', 'DepartmentAPIController');
Route::resource('users', 'UserAPIController');
Route::get('users/{username}', 'UserAPIController@getAccount');

Route::resource('inspection_checklists', 'InspectionChecklistsAPIController');

顺便说一下,我正在使用User API Controller中的getAccount函数。

感谢有人可以提供帮助。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

与CORS无关。 如护照文件所述:

  

JSON API受webauth中间件保护;因此,只能从您自己的应用程序中调用它。无法从外部源调用它。   这意味着您必须登录才能使用这些路由。