2017-12-07 6 views
0

CRM에 내 계정을 만들었습니다.Hash :: check를 사용하여 DB에 해시 된 암호와 일반 암호가 일치하지 않음

대부분의 흥미로운 점은 비밀이며, 나는 그렇게 만드는 처리했습니다

$password = $faker->password(); 
$businessAccount->password = bcrypt($password); 

그때 나는이 암호와 이메일을 보냅니다.

이제 일부 번호와 비밀번호를 사용하여 로그인하려면 내 웹 사이트에 로그인 페이지를 만들었습니다.

public function login(BusinessLoginRequest $request) 
    { 
     $orgNumber = $request->input('orgNumber'); 
     $password = $request->input('password'); 
     var_dump($pass = BusinessAccounts::find('123456789')->password); 
     var_dump(Hash::check($password, $pass)); 
     if(Auth::guard('business')->attempt(['orgNumber' => $orgNumber, 'password' => $password ])) { 
       return 'Hello'; 
     } 
     return 'no'; 

    } 

내가 즉, 내가 이해하는 방법

비밀번호 bcrypt을 통해 해시했다 "로그인"을 클릭 할 때 일이 무엇인지 보려면 여기를 삽입 한 var_dumps 미안 해요, 인증 :: 시도 해시로 일반 암호를 확인하십시오.

오케이, 가자. 먼저 var_dump 나에게 DB에 저장된 암호가 같고 동일하다고 말하십시오.

둘째 위해서 var_dump 내 생각, 내 "부울 (거짓)"라고 말하며 마지막 날 아니, 인증이 실패 말한다.

그러나 내 양식에 해시 된 암호를 입력하면 모두 양호하며 "안녕하세요"이 표시되지만 잘못된 것입니다.

그리고 물론, 나는 가드와 공급자 만들었습니다

'guards' => [ 
     'web' => [ 
      'driver' => 'session', 
      'provider' => 'users', 
     ], 
     'api' => [ 
      'driver' => 'token', 
      'provider' => 'users', 
     ], 
     'business' => [ 
      'driver' => 'session', 
      'provider' => 'business' 
     ] 
    ], 

    'providers' => [ 
     'users' => [ 
      'driver' => 'eloquent', 
      'model' => App\Models\Eloquent\Account::class, 
     ], 
     'business' => [ 
      'driver' => 'eloquent', 
      'model' => App\Models\Eloquent\BusinessAccounts::class 
     ] 
    ], 

을 내 모델 변경되었습니다

class BusinessAccounts extends Model implements Authenticatable 
{ 
    use \Illuminate\Auth\Authenticatable; 

    protected $table = 'business_accounts'; 

    protected $fillable = 
     [ 
      'orgNumber', 'password' 
     ]; 

    public $timestamps = false; 

    protected $primaryKey = 'orgNumber'; 

} 

질문입니다 : 내가 뭘 잘못했는지? unhashed password를 확인하는 방법은 무엇입니까? 내 DB에서 암호 해시를 넣고 싶지 않아.

+0

당신이 사용하는 laravel의 버전? – ochhii

+0

첫 번째 var_dump()에서'$ pass = BusinessAccounts :: find ('123456789') -> password' (변수 할당) 아니면 실제로 $ pass, BusinessAccounts :: find ('123456789')를 원했습니까? -> password' (두 해시 모두 표시)? –

+0

$ businessAccount 인스턴스를 확실히 업데이트 하시겠습니까? 예 : $ businessAccount-> password = bcrypt ($ password); $ businessAccount-> save(); – ochhii

답변

1

는 그런 식으로 해시보십시오 :

use Illuminate\Support\Facades\Hash; 

다음 :

'password' => Hash::make($request->newPassword)