Я новичок в Laravel и использую JWT-аутентификацию в laravel 5.5.18, но у меня это не работает, выдает ошибку при входе в API Interface 'Tymon\JWTAuth\Contracts\JWTSubject' not found"
Может ли кто-нибудь помочь мне, как это исправить.
Спасибо
Я новичок в Laravel и использую JWT-аутентификацию в laravel 5.5.18, но у меня это не работает, выдает ошибку при входе в API Interface 'Tymon\JWTAuth\Contracts\JWTSubject' not found"
Может ли кто-нибудь помочь мне, как это исправить.
Спасибо
composer remove tymon/jwt-auth
composer dump-autoload
затем установите
composer require tymon/jwt-auth:dev-develop --prefer-source
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
php artisan jwt:secret
Route::post('login', 'ApiController@login');
Route::post('register', 'ApiController@register');
Route::group(['middleware' => 'auth.jwt'], function () {
Route::get('logout', 'ApiController@logout');
Route::get('user', 'ApiController@getAuthUser');
});
?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Tymon\JWTAuth\Contracts\JWTSubject;
class User extends Authenticatable implements JWTSubject
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* Get the identifier that will be stored in the subject claim of the JWT.
*
* @return mixed
*/
public function getJWTIdentifier()
{
return $this->getKey();
}
/**
* Return a key value array, containing any custom claims to be added to the JWT.
*
* @return array
*/
public function getJWTCustomClaims()
{
return [];
}
}
<?php
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
use JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
class ApiController extends Controller
{
public function register(Request $request)
{
$user = new User;
$user->name = $request->name;
$user->email = $request->email;
$user->password = bcrypt($request->password);
$user->save();
return response()->json([
'success' => true,
'data' => $user
], 200);
}
public function login(Request $request)
{
$input = $request->only('email', 'password');
$jwt_token = null;
if (!$jwt_token = JWTAuth::attempt($input)) {
return response()->json([
'success' => false,
'message' => 'Invalid Email or Password',
], 401);
}
return response()->json([
'success' => true,
'token' => $jwt_token,
]);
}
public function logout(Request $request)
{
$this->validate($request, [
'token' => 'required'
]);
try {
JWTAuth::invalidate($request->token);
return response()->json([
'success' => true,
'message' => 'User logged out successfully'
]);
} catch (JWTException $exception) {
return response()->json([
'success' => false,
'message' => 'Sorry, the user cannot be logged out'
], 500);
}
}
public function getAuthUser(Request $request)
{
$this->validate($request, [
'token' => 'required'
]);
$user = JWTAuth::authenticate($request->token);
return response()->json(['user' => $user]);
}
}
Вы можете использовать Laravel Passport.
Из официальных документов laravel: https://laravel.com/docs/5.8/passport
Laravel упрощает аутентификацию API с помощью Laravel Passport, который обеспечивает полную реализацию сервера OAuth2 для вашего приложения Laravel за считанные минуты. Passport построен на базе сервера League OAuth2, который обслуживают Энди Миллингтон и Саймон Хэмп.
Действительно, поскольку библиотека поддерживается создателем Laravel, она будет более актуальной и стабильной для Laravel, чем другие параллельные библиотеки.
tymondesigns/jwt-auth
? - person loic.lopez   schedule 20.04.2019laravel/passport
и удалить пакет из приложенияcomposer remove vendor/package
- person Manojkiran.A   schedule 20.04.2019