2016-05-06 9 views
1

Ich mache API in Laravel. Ich benutze die Datenbank, die bereits erstellt wurde und live ist. Dieses System verwendet md5 mit Salzwerten. Ich möchte die Authentifizierung für dieses System durchführen. Wie soll ich tun? Mein Quellcode:Authentifizierung in Laravel

public function authenticate(Request $request) 
{ 
$email = $request->input('email'); 
$password = md5('testpassword' . 'saltvaluehere'); 
try { 
     // 

     // attempt to verify the credentials and create a token for the user 
     if (!$token = JWTAuth::attempt([ 
      'email' => $email, 
      'pass' => $password 
     ]) 
     ) { 


      return response()->json(['error' => 'invalid_credentials'], 401); 
     } 
    } catch (JWTException $e) { 
     // something went wrong whilst attempting to encode the token 
     return response()->json(['error' => 'could_not_create_token'], 500); 
    } 

    // all good so return the token 
    return response()->json(compact('token')); 
} 

Im Kern php diese Authentifizierung durchgeführt wird:

$getpass  = $mydb->CleanString($_POST['password']); 
$getusername = $mydb->CleanString($_POST['username']); 
$dbpass = $mydb->md5_decrypt($mydb->getValue("pass","tbl_admin","username = '".$getusername."'"), SECRETPASSWORD); 

    if($dbpass == $getpass){ 
return 'success full login'; 
} 

oben Code doesnot gleichen Wert von Hash geben, so dass ich mich nicht authentifizieren, in System zu können.

Edited:

ich das Passwort erhalten haben, die mit Datenbank abgeglichen, aber Token erzeugt nicht bieng.

hier ist mein Code:

public function authenticate(Request $request) 
{ 

    $email = $request->input('email'); 
    $password = $request->input('password'); 
    $password = md5($password); 



    try { 
     // 

     // attempt to verify the credentials and create a token for the user 
     if (!$token = JWTAuth::attempt([ 
      'email' => $email, 
      'password' => $password 
     ]) 
     ){ 

      //return response()->json(compact('token')); 
      return response()->json(['error' => 'invalid_credentials','_data'=>[$password,$email]], 401); 
     } 
    } catch (JWTException $e) { 
     // something went wrong whilst attempting to encode the token 
     return response()->json(['error' => 'could_not_create_token'], 500); 
    } 

    // all good so return the token 
    return response()->json(compact('token')); 
} 

kann mir jemand sagen, der Grund, warum Token wird nicht erzeugt wird, und warum ist es ungültig credintials sagen. Wie es das Passwort und die E-Mail der Datenbank der verschlüsselten Form zeigt.

Antwort

0

Dies ist eine Situation, die ich behandelt habe, und ich habe Foss Code als einen Beweis für das Konzept zu geben.

Im Wesentlichen habe ich ein anderes Passwortfeld für alte Passwörter hinzugefügt. Ich importierte Benutzer mit password_legacy Satz auf ein JSON-Objekt der alten Passwortdaten, in meinem Fall:
{ 'hasher' : 'algo', 'hash' : '#####', 'salt' : 'salt here' }

Dann habe ich einen modifizierten Benutzer Service-Provider, so dass die Authentifizierung für password_legacy wenn password geprüft war null. Dann verwendete sie den Illuminate Hasher Vertrag als Basis und konstruierte eine neue Instanz einer Klasse (dynamisch unter Verwendung der -Eigenschaft, also beispielsweise app\Services\Hashing\AlgoHasher) und verwendete diese dann für die Authentifizierung anstelle des Standardsystems.

Wenn es erfolgreich war, I bcrypt 'd das Passwort, password setzen und password_legacy deaktivieren. Dadurch wurde das Passwort auf den wesentlich höheren Sicherheitsstandard von bcrypt erweitert.

Migration Code für neues Feld:
https://github.com/infinity-next/infinity-next/blob/ccb01c753bd5cedd75e03ffe562f389d690de585/database/migrations_0_3_0/2015_06_12_181054_password_legacy.php

Modified Benutzer Anbieter:
https://github.com/infinity-next/infinity-next/blob/ccb01c753bd5cedd75e03ffe562f389d690de585/app/Providers/EloquentUserProvider.php

Hasher Vertrag für Vichan (md5 + Salz):
https://github.com/infinity-next/infinity-next/blob/ccb01c753bd5cedd75e03ffe562f389d690de585/app/Services/Hashing/VichanHasher.php

Relevante Benutzercode:
https://github.com/infinity-next/infinity-next/blob/ccb01c753bd5cedd75e03ffe562f389d690de585/app/User.php#L124-L165

Hoffe, dass hilft!

Verwandte Themen