2016-05-06 3 views
1

Я делаю api в laravel. Я использую базу данных, которая уже построена и находится в режиме реального времени. Эта система использует md5 с значениями соли. Я хочу сделать аутентификацию для этой системы. как мне это делать? Мой исходный код:Аутентификация в 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')); 
} 

В основной PHP это проверка подлинности выполняется:

$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'; 
} 

выше код оленья кожа дают одинаковое значение хэш, так что я не в состоянии проверить подлинность в системе.

Отредактировано:

Я получил пароль, который соответствовал с базой данных, но маркер не bieng генерируется.

вот мой код:

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')); 
} 

может кто-нибудь сказать мне причину, почему лексема не генерируется и почему он говорил недопустимые credintials. так как он показывает пароль и электронную почту базы данных зашифрованной формы.

ответ

0

Это ситуация, с которой я столкнулся, и у меня есть код foss, чтобы дать в качестве доказательства концепции.

По существу, я добавил еще одно поле пароля для старых паролей. Я импортировал пользователь password_legacy набора на объект JSON старых данных пароля, в моем случае:
{ 'hasher' : 'algo', 'hash' : '#####', 'salt' : 'salt here' }

Затем я использовал модифицированную поставщику услуг пользователя так, что проверка подлинность проверяется на password_legacy если password была нулевой. Затем он использовал в качестве основы контракт Illuminate Hasher и построил новый экземпляр класса (динамически, используя свойство hasher, так, например, app\Services\Hashing\AlgoHasher), а затем использовал это для аутентификации вместо системы по умолчанию.

Если это удалось, я установил password и не установил password_legacy. Это повысило пароль до гораздо более высокого уровня безопасности, предлагаемого bcrypt.

код миграции на новое поле:
https://github.com/infinity-next/infinity-next/blob/ccb01c753bd5cedd75e03ffe562f389d690de585/database/migrations_0_3_0/2015_06_12_181054_password_legacy.php

Модифицированный поставщик пользователя:
https://github.com/infinity-next/infinity-next/blob/ccb01c753bd5cedd75e03ffe562f389d690de585/app/Providers/EloquentUserProvider.php

Hasher контракт на Vichan (md5 + соль):
https://github.com/infinity-next/infinity-next/blob/ccb01c753bd5cedd75e03ffe562f389d690de585/app/Services/Hashing/VichanHasher.php

Соответствующий код пользователя:
https://github.com/infinity-next/infinity-next/blob/ccb01c753bd5cedd75e03ffe562f389d690de585/app/User.php#L124-L165

Надеюсь, что это поможет!

Смежные вопросы