2017-07-20 2 views
0

Je sais que je vais perdre le but si je stocke jwt jeton dans ma base de données, mais pour une raison quelconque, je veux le stocker, comment puis-je faire cela?comment stocker jeton JWT dans la base de données

Contrôleur

<?php 

namespace App\Http\Controllers; 

use App\Http\Controllers\Controller; 
use Illuminate\Http\Request; 
use Tymon\JWTAuth\JWTAuth; 

class AuthController extends Controller 
{ 
/** 
* @var \Tymon\JWTAuth\JWTAuth 
*/ 
protected $jwt; 

public function __construct(JWTAuth $jwt) 
{ 
    $this->jwt = $jwt; 
} 

public function postLogin(Request $request) 
{ 
    $this->validate($request, [ 
     'email' => 'required|email|max:255', 
     'password' => 'required', 
    ]); 

    try { 

     if (! $token = $this->jwt->attempt($request->only('email', 'password'))) { 
     $create_token = User::where('user_id', $login->user_id)->update(['token' => $token]); 
      return response()->json(['user_not_found'], 404); 
     } 
     else { 
     $create_token = User::where('user_id', auth()->user()->user_id)->update(['token' => $token]); 
     } 

    } catch (\Tymon\JWTAuth\Exceptions\TokenExpiredException $e) { 

     return response()->json(['token_expired'], 500); 

    } catch (\Tymon\JWTAuth\Exceptions\TokenInvalidException $e) { 

     return response()->json(['token_invalid'], 500); 

    } catch (\Tymon\JWTAuth\Exceptions\JWTException $e) { 

     return response()->json(['token_absent' => $e->getMessage()], 500); 

    } 

    return response()->json(compact('token')); 
} 

    public function logout(Request $request) 
{ 
    $this->jwt->invalidate($this->jwt->getToken()); 
    return response()->json([ 
     'message' => 'User logged off successfully!' 
    ], 200); 
} 
} 

J'ai essayé la méthode ci-dessus mais je m'y suis erreur disant appel à la fonction non définie App \ Http \ Controllers \ auth() quelqu'un peut me aider ??

+1

Essayez 'Auth :: user() -> id' pour obtenir l'ID utilisateur de la table de l'utilisateur par défaut de laravel – Hari

+0

il enregistre le jeton mais chaque fois que je reçois un nouveau jeton je ne met pas le jeton – PinballWizard

+0

Si vous avez' token' alors vous n'avez pas besoin d'accéder à la fonction 'postlogin'. vous pouvez mettre à jour quand le jeton est mis à jour – Hari

Répondre

0

Pas conseillé de voir que les jetons web json sont sensibles au temps mais j'ai écris quelque chose de similaire mais pour l'utilisation de redis. En regardant votre code, je vous conseille de créer une ligne pour tokens et de l'ajouter au public $hidden = ['password','token']. Lorsqu'un utilisateur est créé, vous créez et enregistrez un jeton dans la base de données.