需要有关具有身份验证和不具有身份验证的Laravel API的解决方案

时间:2019-01-15 02:22:39

标签: laravel api laravel-passport

我正在使用React Native和Laravel Passport API对项目进行编码。

我有1个预订链接,如下所示:domain.com/api/v1/bookings

该链接不需要登录,但是我想在令牌中添加令牌(密码授予令牌)时,服务器将通过该令牌接收用户的登录信息。

Route::group(['prefix' => 'v1'], function () {
    Route::resource('bookings', 'BookingController')->parameters([
        '{module}' => 'id'
    ])->only(['store','show']);
});

我有两种解决方法:

解决方案1:创建两个具有Auth和不具有Auth的路由。 =>但我不觉得专业:D

Route::group(['prefix' => 'v1'], function () {
    Route::resource('bookings', 'BookingController')->parameters([
        '{module}' => 'id'
    ])->only(['store','show']);
});
Route::group(['prefix' => 'v1', 'middleware' => 'auth:api'], function () {
    Route::resource('bookingsAuth', 'BookingController')->parameters([
        '{module}' => 'id'
    ])->only(['store','show']);
});

解决方案2:用户“客户端凭据授予令牌”没有用于身份验证的用户名,密码和“密码授予令牌”。 =>但我不确定这是否是最好的解决方案。

Route::group(['prefix' => 'v1', 'middleware' => ['client','auth:api']], function () {
    Route::resource('bookings', 'BookingController')->parameters([
        '{module}' => 'id'
    ])->only(['store','show']);
});

解决方案2,我尝试但未与令牌客户端一起使用:{“ message”:“未经身份验证。”}

更新:临时解决方案,在Controller的__construct函数上设置中间件

class BookingController extends Controller
{
    public function __construct(Request $request) {
        //***Check exist token***
        if ($request->bearerToken()) {
            $this->middleware( 'auth:api' );
        }
    }
}

0 个答案:

没有答案