2013-06-07 4 views
3

그래서이 제목은 기본적으로 내 문제를 설명합니다. 내 해시 : make()가 미쳐 버렸습니다. 해시 된 암호를 사용하여 users 테이블을 만들었지 만 Laravel이 내 자격 증명을 받아들이지 못하고 문제가 Hash :: make에 있다고 생각합니다.Hash :: make ('password')는 매 통화마다 다른 결과를 반환합니다.

그래서 시험이 코드 :

Route::get('/', function() 
{ 
    return Hash::make('1234'); 
}); 

때마다 나는 경로가 '/'는 나에게 다른 해시를 제공했다.

누구나 그렇게 행동합니까? 제안 사항이 있으십니까? 나는 길을 잃었다!

은 로켓 팁 후, 나는

if(!Hash::check('1234', User::find(1)->password)) 
    return 'not'; 

$credentials = array(
     'email' => '[email protected]', 
     'password' => '1234', 
     //'remember' => $remember 
    ); 
if(Auth::attempt($credentials)) 
{ 
    return View::make('hello'); 
} 
return "Invalid Credentials"; 

을 시도했다 그러나 "잘못된 자격 증명"을 반환 유지합니다. auth.php를 두 번 확인했는데 설정이 올바르게되었습니다. 내가 시도 할 수있는 다른 건 없나요?

+0

소리가 난다. – SLaks

+1

'Auth :: check'가 당신을 대신 해줄 때'Auth :: check'을 스스로 실행할 필요가 없습니다. 어떤 방식 으로든 기본'User' 모델을 변경 했습니까? –

+0

나는 mysql 테이블이 사용자이고, 컨트롤러가 User이고, 필드는 이메일과 패스워드이다. 공장 설정입니다. – Magus

답변

9

그게해야 할 일입니다. 매번 다른 암호를 만드는 것으로, 새로운 무작위 소금이 만들어집니다.

사용자의 암호를 확인하려면 check 메서드를 사용합니다.

if(Hash::check('1234', $password)){ 
} 

또는 Auth::attempt을 사용할 수 있습니다.

$user = array(
    'email' => $email, 
    'password' => $password 
); 
if (Auth::attempt($user)){ 
} 

문서 도구 : 당신이 소금을 보는 것 같은 http://laravel.com/docs/security