Est-il possible avec https://github.com/tymondesigns/jwt-auth .__ d'obtenir le current user
? Parce que pour le moment, je ne peux générer qu'un jeton (lorsqu'un utilisateur se connecte).
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
try {
if (! $token = JWTAuth::attempt($credentials)) {
return response()->json(['error' => 'invalid_credentials'], 401);
}
} catch (Tymon\JWTAuth\Exceptions\JWTException $e) {
return response()->json(['error' => 'could_not_create_token'], 500);
}
return response()->json(compact('token'));
}
Vous pouvez obtenir des données utilisateur enregistrées.
$credentials = $request->only('code', 'password', 'mobile');
try {
// verify the credentials and create a token for the user
if (! $token = JWTAuth::attempt($credentials)) {
return response()->json(['error' => 'invalid_credentials'], 401);
}
} catch (JWTException $e) {
// something went wrong
return response()->json(['error' => 'could_not_create_token'], 500);
}
$currentUser = Auth::user();
print_r($currentUser);exit;
Vous n'avez pas besoin de Auth::user();
Vous pouvez utiliser la méthode toUser
de JWTAuth
. Il suffit de passer le jeton en paramètre et vous récupérerez les informations de l'utilisateur
$user = JWTAuth::toUser($token);
return response()->json(compact('token', 'user'));
Pour plus d'informations, voici la méthode toUser:
/**
* Find a user using the user identifier in the subject claim.
*
* @param bool|string $token
*
* @return mixed
*/
public function toUser($token = false)
{
$payload = $this->getPayload($token);
if (! $user = $this->user->getBy($this->identifier, $payload['sub'])) {
return false;
}
return $user;
}
Vous pouvez également utiliser la méthode JWTAuth::user()
.
L'appel de méthode user()
est renvoyé dans la méthode toUser()
, qui est elle-même un alias de la méthode authenticate()
qui authentifie un utilisateur via un jeton. Si l'utilisateur est déjà authentifié, il n'est pas nécessaire de s'authentifier à nouveau (comme le fait toUser()
), mais la méthode user()
peut être utilisée pour obtenir l'utilisateur authentifié.
// $token = JWTAuth::attempt($credentials) was successful...
$user = JWTAuth::user();
return response()->json(compact('token', 'user'));
Cela fonctionne très bien pour moi (laravel 5.7). utilisez Tymon\JWTAuth\Facades\JWTAuth;
public function me(Request $request)
{
$user = JWTAuth::user();
if (count((array)$user) > 0) {
return response()->json(['status' => 'success', 'user' => $user]);
} else {
return response()->json(['status' => 'fail'], 401);
}
}
il suffit de revenir dans le middleware d’itinéraire spécifié L’itinéraire que vous avez défini api route
Route::group(['middleware' => 'jwt.auth'], function () {
Route::post('/user', function (Request $request) {
try {
$user = \Illuminate\Support\Facades\Auth::user();
return $user;
} catch (\Tymon\JWTAuth\Exceptions\UserNotDefinedException $e) {
return '$user';
}
});
});
essayez ceci (cela fonctionne très bien avec laravel 5.6,5.7):
use Tymon\JWTAuth\Facades\JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
// code to generate token for user with email [email protected]
$user=User::where('email','=','[email protected]')->first();
if (!$userToken=JWTAuth::fromUser($user)) {
return response()->json(['error' => 'invalid_credentials'], 401);
}
return response()->json(compact('userToken'));