2016-08-31 7 views
0

안녕하세요 저는 laravel을 처음 사용하고 있습니다. 새 사용자가 인증을 등록 할 때 나는이 오류 메시지입니다. 내 문제를 해결하는 방법 이 오류 메시지와 함께 인증 실패.laravel 5.2 인증 실패

Illuminate\Auth\SessionGuard::login() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\customer given. 

내 컨트롤러는

public function store(Request $request) 
    { 
     $user = new customer; 
     $user->name=Input::get('name'); 
     $user->email=Input::get('email'); 
     $user->password=Input::get('password'); 
     $user->save(); 

     Auth::login($user); 
     return redirect::home(); 
    } 

내 경로

 Route::get('register', '[email protected]'); 
     Route::post('store', '[email protected]'); 
     Route::get('login', '[email protected]'); 
     Route::post('logout', '[email protected]'); 

내 등록 페이지가 어떻게 로그인과 로그 아웃을 등록하는 나에게 사람들을 도와주세요

<form action="store" method="post"> 
     <label for="name">Name</label> 
     <input type="text" name="name" autocomplete="off"> 
     <br> 
     <label for="email">Email</label> 
     <input type="text" name="email" autocomplete="off"> 
     <br> 
     <label for="password">Password</label> 
     <input type="text" name="password" autocomplete="off"> 
     <br> 
     <input type="hidden" name="_token" value="{{csrf_token()}}"> 
     <br> 
     <input type="submit" name="submit" value="Submit"> 
</form> 

입니다 완전한 인증.

감사합니다. 귀하의 제안을 환영합니다.

+0

laravel이 제공하는 기본 등록 및 로그인 프로세스를 사용하지 않은 이유는 무엇입니까? 귀하의 문제는 귀하가 App \ User 대신 고객을 사용한다는 것입니다. 자신의 모델을 사용하고자한다면 Authenticable –

+0

@FrankProvost의 인스턴스인지 확인하십시오. 먼저 나는 PHP에서 왔어. 인증 작동 방식을 알고 싶습니다. jeffrey way 튜토리얼에서 laracasts를 따르고 있습니다. – whoami

+0

@FrankProvost. 이미 App \ customer를 사용했습니다. 내가 Auth :: login ($ user)을 사용할 때; return redirect :: home(); 오류가 발생했습니다. 하지만 내가 위의 인증 코드를 제거 사용자가 데이터베이스 테이블에 저장됩니다. 내 코드에서 무엇이 잘못 되었습니까? – whoami

답변

1

귀하의 실제 모델을 모른 채 최선의 답변을 제공하려고 노력합니다.

  • 인증 컨트롤러를

    • 홈보기
    • 앱 레이아웃
    • 인증의 경로 ​​:

      당신은 만들려면

      php artisan make:auth 
      

      를 사용하는 것이 가장 좋은 appraoch 경악을 laravel 매우 새로운 경우

    • 비밀번호 재설정

    기본, 기존 App \ User 모델을 사용하여이 작업이 수행됩니다. 당신이 사용자에게 기본 앱 \ 사용자를하지 않으려는 당신이 인증을 위해 앱 \ 고객을 사용하려는 경우, 당신은 적어도 당신이 확실히를 받게됩니다 모델이없이 인증 가능

    use Illuminate\Foundation\Auth\User as Authenticatable; 
    
    class Customer extends Authenticatable 
    { 
    ... 
    } 
    

    을 확장 할 필요가있을 것이다 주어진 오류. 그러나 전자 메일, 암호, 기억 토큰 등과 같이 고객 모델에 필수 필드가 있는지 확인해야합니다.이 필드를 사용하지 않으려면 인증 컨트롤러에서 추가로 적용해야합니다.

    앞서 언급 한 것처럼 초보자를위한 최선의 방법은 생성 된 인증을 사용하는 것입니다. 인증은 몇 가지 뷰를 생성하고 동일한 이름을 가진 기존 덮어 쓰게됩니다 : PHP는 장인 메이크업 - https://laravel.com/docs/5.2/authentication

    주의 수 : 당신은 더 여기에서 찾을 수 있습니다.

    • /resources/views/home.blade.php
    • /resources/views/layout/app.blade.php
    • /resources/views/auth/login.blade.php
    • /resources/views/auth/register.blade.PHP는

    과 코드를 보면 인증

    내에서 몇 당신은 단순히

    $user = new User 
    

    $user = new customer; 
    

    를 교체 시도하고 당연히 사용자 모델에 풀 수

    use App\User; 
    
  • +0

    Frank provost에 동의합니다. –