Как исправить ошибки createtoken () в паспорте laravel - PullRequest
0 голосов
/ 03 апреля 2019

Я реализовал аутентификацию API Laravel с использованием паспорта, она отлично работает в моем регионе.Однако, когда я развернул свое приложение на сервере cPanel, оно не работает.и возвращает эту ошибку при попытке входа или регистрации

исключение: файл "Symfony \ Component \ Debug \ Exception \ FatalErrorException": "/ home / newalgeria / new_algeria / vendor / zendframework / zend-diactoros/src/PhpInputStream.php "строка: 17 сообщение: трассировка" Класс 'Zend \ Diactoros \ Stream' not found ": []

Я выполнил следующие действия, чтобы настроить его:

1-

composer require laravel/passport

2 - я добавил эту строку провайдерам в config / app.php

'providers' =>[
Laravel\Passport\PassportServiceProvider::class,
],

3-

php artisan passport:install
php artisan migrate

4 - добавлен hasApiToken для пользователя. Модель

use Laravel\Passport\HasApiTokens;
...
...
class User extends Authenticatable
{
  use HasApiTokens, Notifiable;
...
...
..
}

5 - добавлен в приложение / Providers / AuthServiceProvider.php

 public function boot() 
    { 
        $this->registerPolicies(); 
        Passport::routes(); 
    } 

6 - изменен драйвер на паспортв config / auth.php

...
..

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

...
..

6 - создал мои маршруты

Route::post('login', 'API\UserController@login');
Route::post('register', 'API\UserController@register');
Route::group(['middleware' => 'auth:api'], function(){
Route::post('details', 'API\UserController@details');
});

7 - затем мой контроллер аутентификации (## Где я нахожу проблему на createtoken() функция ##)


    /**
     * login api
     *
     * @return \Illuminate\Http\Response
     */
    public function login(){
        if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
            $user = Auth::user();
            $success['token'] =  $user->createToken('MyApp')-> accessToken;

            return response()->json(['success' => $success], $this-> successStatus);
        }
        else{
            return response()->json(['error'=>'Unauthorised'], 401);
        }
    }
    /**
     * Register api
     *
     * @return \Illuminate\Http\Response
     */
    public function register(Request $request)
    {
        $input = $request->all();
        $validator = Validator::make($request->all(), [
            'name' => 'required',
            'email' => 'required|unique:users',
            'password' => 'required',
            'c_password' => 'required|same:password',
        ]);
        if ($validator->fails()) {
            return response()->json(['error'=>$validator->errors()], 401);
        }
        $input = $request->all();
        $input['password'] = bcrypt($input['password']);
        $user = User::create($input);
      $success['token'] =  $user->createToken('MyApp')-> accessToken;
        $success['name'] =  $user->name;
        return response()->json(['success'=>$success], $this-> successStatus);
    }
    /**
     * details api
     *
     * @return \Illuminate\Http\Response
     */
    public function details()
    {
        $user = Auth::user();
        return response()->json(['success' => $user], $this-> successStatus);
    }



То, что я пробовал до сих пор

1 - я попытался запустить на сервере

run compsoer php passport:install 

снова, чтобы создатьновый идентификатор клиента бно это не работает та же ошибка

2-я пытался обновить композитор то же самое

3- я пытался прокомментировать эту строку ( где createToke ('MyApp')) на моем контроллере авторизации в функции регистра

$success['token'] =  $user->createToken('MyApp')-> accessToken;

он создает нового пользователя, но без токена ==> это означает, что проблема в этой функции?но он работает на локальном

Я ожидаю логин и регистрируюсь нормально, как на локальном, но

Я получаю эту ошибку снова и снова

исключение: "Symfony\ Component \ Debug \ Exception \ FatalErrorException "file:" /home/newalgeria/new_algeria/vendor/zendframework/zend-diactoros/src/PhpInputStream.php "строка: 17 сообщение:" Класс 'Zend \ Diactoros \ Stream' не найден "trace: []

PS:

Я использую larvel 5.8, для которого требуется php> = 7.1 но.Однако в моем терминале сервера, когда я запускаю php -v, он показывает, что версия php 5.6, но в браузере, когда я тестирую phpversion ();он возвращает php 7.2

Любая помощь, пожалуйста?

...