1

나는 간단한 인증 방법을 만들려고 노력하고 있지만 제대로 작동하지는 않습니다. 시도가 작동하지 않는 것 같습니다.Laravel 4와의 간단한 인증

내 auth.php

'driver' => 'eloquent', 
     'model' => 'User', 
     'table' => 'users', 
      'reminder' => array(
       'email' => 'emails.auth.reminder', 'table' => 'password_reminders', 
      ), 

UserController.php는

나는 우리가 Hash::make();과 암호를 저장하는 데 필요한 읽기 alerady. 그래서 이미 완료되었습니다.

public function signin() 
    { 

    $username = Input::get('username'); 
    $password = Input::get('password'); 

    $users = User::where('username', $username)->get(); 

    try { 
     if (!sizeof($users)) 
      throw new Exception('Oops! Username or password don't match.'); 

     $user = $users[0]; 

     if (!$user) 
      throw new Exception('Oops! Username or password don't match'); 

     if(Hash::check($password, $user->password)) 
      throw new Exception(Oops! Username or password don't match); 

     Auth::attempt(array('name'=>$user->name, 'email'=>$user->email, 'password'=>$user->password)); 

     if (Auth::check()) 
     { 
       throw new Exception('Works fine'); 
     } 

     $this->success = 'YES'; 

    } catch (Exception $e) { 
     $this->message = $e->getMessage(); 
    } 

    return Response::json(array('success' => $this->success, 'message' => $this->message)); 
} 

login.blade.php

<body> 

    <div class="container"> 


     <form class="form-signin" role="form" onsubmit="return false;"> 
     {{ Form::token(); }} 
     <h2 class="form-signin-heading">Login</h2> 
     <input id="username" type="text" class="form-control" placeholder="Username" required autofocus> 
     <input id="password" type="password" class="form-control" placeholder="Senha" required> 
     <label class="checkbox"> 
      <input type="checkbox" value="remember-me"> Manter conectado 
     </label> 
     <button id="btn-signin" class="btn btn-lg btn-primary btn-block" type="submit">Entrar</button> 
     </form> 

    </div> 

    </body> 

    <script src="//code.jquery.com/jquery.js"></script> 
    <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.2/js/bootstrap.min.js"></script> 
    <script src="//cdnjs.cloudflare.com/ajax/libs/jasny-bootstrap/3.0.1-p7/js/bootstrap.min.js"></script> 

    <script type="text/javascript"> 

jQuery(document).ready(function($) { 

$("#btn-signin").click(function() {  

    $.ajax({ 
      url: "/intranet/public/user/signin", 
      type: "POST", 
      data: {username: $("#username")[0].value, password: $("#password")[0].value}, 
      context: document.body, 
      success: function(json, status, xhr) { 

       var message; 

       if (json.success=="YES") { 
        window.location = "{{ url('/home')}}"; 
       } else { 
        alert(json.message); 
       } 
      }, 
      error: function(evt) { 
       var response = jQuery.parseJSON(evt.responseText); 
       alert(response.error.type+': '+response.error.message) 
      } 
     }); 
    }); 
});   
+0

로그인하려고하면 어떻게됩니까? –

+0

모든 일이 정상적으로 처리되지만 일부 사용자가 Auth :: check()로 로그인했는지 확인하면 아무도 없습니다 –

+0

문제점 중 하나가' 'password'=> $ user-> password'이고''password가 아닙니다 '=> $ password'. –

답변

3

해야하며, 나는 내 의견이 일부 문제를 볼 수 있었다 충분하다 :

public function signin() 
{ 
    $username = Input::get('username'); 
    $password = Input::get('password'); 

    $user = User::where('username', $username)->first(); 

    $this->message = ''; 

    try { 

     if (! $user || ! Auth::attempt(array('email' => $user->email, 'password' => $password))) 
     { 
      throw new Exception("Oops! Username or password don't match"); 
     } 

     $this->success = 'YES'; 

    } catch (Exception $e) { 
     $this->message = $e->getMessage(); 

     $this->success = 'NO'; 
    } 

    return Response::json(array('success' => $this->success, 'message' => $this->message)); 
} 
+0

고마워, 친구. 잘 작동합니다. –

0
if(Hash::check($password, $user->password)) 

난 당신이 너무 많은 일을하는지 생각

if(! Hash::check($password, $user->password)) 
+0

작동하지 마십시오. 같은 행동. –