2014-10-14 4 views
1

내 데이터베이스에 저장된 해시 암호로 양식 입력을 검사하려고합니다. 하지만 어떤 이유로 암호가 아닌 사용자 이름으로 확인이 실행됩니다. 자, 제 질문은 올바른 방법으로이 명령을 사용하지 않습니까 아니면 그냥 잊어 버린 것입니까? 에,요청시 Laravel 해시 검사

@extends("master") 

@section("content") 
<h2>Check User:</h2> 
<h3 class="text-success">{{ $user->username }}</h3> 

{!! Form::model($user, ['url' => '/' . $user->slug . '/confirm', 'method' => 'GET']) !!} 

<div class="form-group"> 
<div class="row"> 
    <div class="col-xs-4"> 
     {!! Form::label('check', 'Password') !!} 
     {!! Form::text('check', null, ['class' => 'form-control']) !!} 
    </div> 
</div> 
</div> 

<div class="form-group"> 
{!! Form::submit('Check Password', ['class' => 'btn btn-primary']) !!} 
<a href="/" class="btn btn-primary">Cancel</a> 
</div> 

{!! Form::close() !!} 


@stop 

이제 check.blade.php에,

route.php

Route::get('/{user}/confirm', '[email protected]'); 

PagesController.php

public function check(User $user) 
{ 
    return view('users.check', compact('user')); 
} 

public function confirm(User $user, Request $request) 
{ 
    echo "Input = " . $request->input('check'); 
    echo "<br>"; 
    echo "Password in DB = " . $user->password; 
    echo "<br>"; 
    echo "Username = " . $user->username; 

    if (Hash::check($request->input('check'), $user->password)) 
     { 
      echo "<br>Correct Password."; 
     } else { 
      echo "<br>Incorrect Password."; 
     } 

에서 그리고 마지막에 : 여기 내 코드입니다 내 데이터베이스, 나는 1234 암호로 테스트라는 사용자가 있습니다. 내가 암호 필드에 "1234"를 넣으면, 나는 "Passw ord ". 하지만 "test"를 입력하면 "올바른 비밀번호"가 반환됩니다.

저는 프로그래밍에 익숙하지 않습니다. 언급할만한 가치가 있습니다.

+0

저는 Laravel 5를 사용하고 있으며 사용자 생성시 암호를 저장할 때 hash :: make를 사용합니다. 암호가 해시되었습니다. –

답변

1

사용자 이름과 동일한 비밀번호로 사용자를 생성 한 것으로 보입니다.

그래서
$user = new User(); 
$user->name = $request->input('name'); 
$user->password = Hash::make($request->input('name')); 
$user->save(); 

작성하지 있습니다

$user = new User(); 
$user->name = $request->input('name'); 
$user->password = Hash::make($request->input('password')); 
$user->save(); 

나는 사용자를 생성하는 프로세스는 다음과 같이 지금 생각 : 당신은 당신이 당신의 사용자를 생성하는 방법을보고해야하며, 그것이 있어야

암호 필드 용이지만 이름 용이므로 사용자 이름을 전달할 때 Hash::check이 true이고 암호를 전달할 때 false입니다.

관련 문제