2014-05-22 46 views
0

我有一個Web aplication在那裏我可以創建成果Tecnico爲什麼不同的「哈希」,從兩個不同的服務器上使用相同的密碼

TecnicoController(應用程序網站)

 $tecnico = new Tecnico; 
     $tecnico->idTecnico = Input::get('idtecnico'); 
     $tecnico->Nombre = Input::get('nombre'); 
     $tecnico->Apellido = Input::get('apellido'); 
     $tecnico->Telefono = Input::get('telefono'); 
     $tecnico->Contrasena = Hash::make(Input::get('idtecnico')); //<--- hash of my pass, eg pass: 12 -> hash: $12345abc 
     $path = public_path().'/tecnico'; 
     $fotoPerfil = Input::file('imagen'); 
     $fotoPerfil->move($path, Input::get('idtecnico')); 
     $tecnico->Foto ='/tecnico/'.$tecnico->idTecnico; 
     $tecnico->save(); 

另外我有一個不同項目,它可以作爲服務器從移動應用程序訪問數據庫。一個Tecnico從你的手機可以通過輸入contrasena(密碼)和idTecnico(ID)來訪問您的帳戶

TecnicoController(服務器)

 $idUnico = Input::get('idUnico'); 
     $contrasena = Hash::make(Input::get('contrasena')); //<--- hash of my pass: eg pass: 12 -> hash: $146435gzc (change) 
     $tecnico = DB::table('Tecnico')->where('idTecnico', $idUnico)->where('Contrasena', $contrasena)->first(); 

當您從服務器輸入密碼時出現的問題。 Hashin創建數據庫中存在的不同值(創建Tecnico時)。

我如何獲得數據庫中相同的散列值?

+0

您應該使用'Hash :: check'而不是查詢數據庫的散列。 – h2ooooooo

回答

1

不幸的是,您無法在查詢中輕鬆完成此操作,您最好的辦法就是抓住用戶,然後比較密碼,就像這樣。

$idUnico = Input::get('idUnico'); 
$tecnico = DB::table('Tecnico')->where('idTecnico', $idUnico)->first(); 

if($tecnico) { 
    if(Hash::check(Input::get('contrasena'), $technico->Contrasena)) { 
     // passwords are the same 
    } 
} 
+1

感謝您的回覆,工作正常。你能解釋我如何工作Hash :: check'方法嗎? – cheloncio

+1

哈希是鹽醃的,但鹽本身就是哈希,基本上'Hash :: check()'從提供的哈希中獲得銷售並進行比較,而不重新創建一個全新的哈希。 – ollieread

相關問題