API с Lumen Framework авторизация не работает - PullRequest
0 голосов
/ 28 сентября 2019

Я работаю с простым API с Lumen, но я столкнулся с проблемой.Я хочу удалить пользователя, если он является пользователем, но моя авторизация не работает.

Для входа в систему я использую токен JWT.

UserController.php

    /**
     * Delete user by user id.
     *
     * @param int $id
     *
     * @return mixed
     */
    public function delete($id)
    {
        $user = User::find($id);

        $this->authorize('delete', $user);

        $user->delete();

        return response()->json([
            'success'   =>  'User deleted with success'
        ], 200);
    }

UserPolicy.php

class UserPolicy
{

    public function delete(User $user, User $user_current)
    {
        return $user->id === $user_current->id;
    }

}

AuthServiceProvider.php

    public function boot()
    {
        Gate::policy(User::class, UserPolicy::class);

        $this->app['auth']->viaRequest('api', function ($request) {
            if ($request->header('Authorization')) {
                return User::where('api_token', $request->input('api_token'))->first();
            }
        });
    }

Я не понимаю, почему это не работает.

1 Ответ

1 голос
/ 28 сентября 2019

Попробуйте использовать как показано ниже в заголовке:

Authorization : Bearer [TOKEN]

Обновление 1:

Если вы находитесь в Apache, я думаю, это может помочь вам, так как оно работает на моем:
Просто добавьте эти строки в ваш файл .htaccess:

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

Обновление 2:

Хорошо, пожалуйста, измените ваш AuthServiceProvider, как показано ниже:

$this->app['auth']->viaRequest('api', function ($request) {
    $token = $request->bearerToken();

    if(!$token) {
        // Unauthorized response if token not there
        throw new Exception('token not provided');
    }
    .
    .
    .
}
...