我正在使用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' );
}
}
}