2017-05-18 4 views
1

Kurz gesagt, ich die folgenden Fehlermeldung:Lumen: JWT Authentifizierung mit keiner Benutzer-Tabelle

{ 
    "message": "Undefined index: password", 
    "status_code": 500 
} 

A liitle Hintergrund:

Ich habe einen users Tisch und ein pincodes Tisch, Die users Tabelle haben zwei Spalten mobile_number und status, ich sende SMS an Handynummer in Benutzer Tabelle, Sms haben einen geheimen Code, dann speichert ich diesen Code zusammen mit der user_id in pincodes Tabelle.

So wird die Authentifizierung gelten auf pincodes, wo ich habe user_id und die code, um zu überprüfen, dass der Benutzer authentisch ist oder nicht. Ich benutze Lumen Mikro-Rahmen, mit JWT Authentifizierung library. So änderte ich mein Pincode Modell zum selben wie User Modell. Die

namespace App; 

use Illuminate\Auth\Authenticatable; 
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 
use Illuminate\Database\Eloquent\Model; 
use Laravel\Lumen\Auth\Authorizable; 

class Pincode extends Model implements 
AuthenticatableContract, 
AuthorizableContract { 
    use Authenticatable, Authorizable; 

    protected $table = 'pincodes'; 
    public function user() { 
     return $this->belongsTo('App\User'); 
    } 
} 

Prüfungstyp Methode Anfrage senden (siehe unten) und die params sind user_id und code. Was ich richtig mache.

Und das Verifikationsverfahren, bei dem das Token generieren soll:

public function verify(Request $request) { 
    $uid = $request->get('uid'); 
    $pinCode = $request->get('code'); 

    $findPinCode = \App\Pincode::where('uid', $uid)->where('code', $pinCode)->first(); 
    if (!$findPinCode) { 
     return response()->json([ 
      'message' => 'No pin Code found', 
      'code' => 404, 
     ]); 
    } 

    $findPinCode->status = 'v'; 
    $findPinCode->dateVerify = Carbon::now(); 

    $findPinCode->save(); 

    try { 

     $this->validatePostLoginRequest($request); 

    } catch (HttpResponseException $e) { 
     return $this->onBadRequest(); 
    } 

    try { 
     if (!$token = JWTAuth::attempt(
      $this->getCredentials($request) 
    )) { 
      return 'asdasd'; 
      return $this->onUnauthorized(); 
     } 
    } catch (JWTException $e) { 
     return $this->onJwtGenerationError(); 
    } 

ich folgende Fehlermeldung erhält:

{ 
    "message": "Undefined index: password", 
    "status_code": 500 
} 

Antwort

1

Die Codebasis Sie macht von tymondesigns/jwt-auth Paket Gebrauch. Die Methode JWTAuth::attempt verwendet standardmäßig E-Mail und Passwort.

wäre die einfachste Art, den Benutzer durch das PIN-Code und holen das Benutzerobjekt und erzeugen Token für den Benutzer unter Verwendung JWTAuth::fromUser

$user = User::find($uid); 

try { 
    if (!$token = JWTAuth::fromUser($user)) { 
     return $this->onUnauthorized(); 
    } 
} catch (JWTException $e) { 
    return $this->onJwtGenerationError(); 
} 
manuell zu validieren