У меня проблема с jwt в люмене 6. Я могу войти в систему и через API прислать мне токен и более подробную информацию, но когда я пытаюсь вернуть пользователя, вошедшего в него, возвращаемое значение null, я использую tymon / jwt dev в качестве моего контроллера аутентификации
public function login(Request $request)
{
//validate incoming request
$this->validate($request, [
'Email' => 'required|string',
'password' => 'required|string',
]);
$credentials = $request->only(['Email', 'password']);
if (! $token = Auth::attempt($credentials)) {
return response()->json(['message' => 'Unauthorized'], 401);
}
return $this->respondWithToken($token);
}
public function Register(Request $request){
$User = User::where('Email',$request->Email)->orwhere('Username',$request->Username)->first();
if (!empty($User)){
return response()->AloResponse(null, 'fail', Lang::get('messages.DuplicateEmail'));
}
$User = User::create([
'Name' => $request->Name,
'Email' => $request->Email,
'Username' => $request->Username,
'password' => app('hash')->make($request->Password)
]);
return response()->AloResponse($User, 'success', Lang::get('messages.RegisterSuccess'));
}
его config / auth. php
<?php
use App\Models\Base\User;
return [
'defaults' => [
'guard' => 'api',
'passwords' => 'users',
],
'guards' => [
'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => User::class
]
]
];
его authserviceprovider
<?php
namespace App\Providers;
use App\Models\Base\User;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\ServiceProvider;
class AuthServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Boot the authentication services for the application.
*
* @return void
*/
public function boot()
{
// Here you may define how you wish users to be authenticated for your Lumen
// application. The callback which receives the incoming request instance
// should return either a User instance or null. You're free to obtain
// the User instance via an API token or any other method necessary.
$this->app['auth']->viaRequest('api', function ($request) {
if ($request->input('api_token')) {
return User::where('api_token', $request->input('api_token'))->first();
}
});
}
}
и его моя модель пользователя
<?php
namespace App\Models\Base;
use Illuminate\Auth\Authenticatable;
use Laravel\Lumen\Auth\Authorizable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Tymon\JWTAuth\Contracts\JWTSubject;
class User extends Model implements AuthenticatableContract, AuthorizableContract, JWTSubject
{
use Authenticatable, Authorizable;
protected $table = 'Users_tbl';
protected $fillable = [
'Name',
'Username',
'password',
'Email'
];
protected $hidden = [ 'password' ];
public function Books()
{
return $this->hasMany('App\Models\Base\Book','user_id','ID');
}
/**
* @inheritDoc
*/
public function getJWTIdentifier()
{
return $this->getKey();
}
/**
* @inheritDoc
*/
public function getJWTCustomClaims()
{
return [];
}
}
мне нужна помощь fini sh это, я думаю, я кое-что забыл, но когда я устанавливаю новый люмен, его работа над ним завершается на моей законченной работе над проектом ...