2014-05-22 32 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

相关问题