2014-09-24 15 views
0

Auth : check() 성공은 Auth : attempt() 성공 후 실패합니다. 나는 간단한 인증을 만들기 위해 laracast.com 튜토리얼을 따르고있다. 이 특정 자습서 https://laracasts.com/series/laravel-from-scratch/episodes/15. 그래서 약간의 변경이 4 ~ 5 버전이나 im이 잘못되었다.laravel Auth :: check() 실패

이것은 인증을 수행하고 두 번째 인증이 수행하는 기능입니다. 둘 다 같은 학급에 있습니다.

class User extends Eloquent implements UserInterface, RemindableInterface { 

    use UserTrait, RemindableTrait; 

    protected $table = 'user'; 

    protected $hidden = array('user_password', 'remember_token'); 

    protected $fillable = ['user_displayname', 'user_fname', 'user_lname', 'user_email',  'user_password']; 

    public $errors; 

    public static $rules = array(
     'user_displayname' => 'required|unique:user,user_displayName', 
     'user_fname' => 'required', 
     'user_lname' => 'required', 
     'user_email' => 'required|unique:user,user_email', 
     'user_password' => 'required' 
    ); 


    public function isValid($data) 
    { 
     $validation = Validator::make($data, static::$rules); 

     if ($validation->passes()) return true; 

     $this->errors = $validation->messages(); 
    } 

    public function getAuthPassword() 
    { 
     return $this->user_password; 
    } 

} 

두 번째 질문 :

public function store() 
{ 
    $credentials = Input::only('user_displayname'); 
    $credentials['password'] = Input::get('user_password'); 

    if (Auth::attempt($credentials)) 
    { 
     return Auth::user(); 
    } 

    return 'not logged'; 
} 

public function status() 
{ 
    return dd(Auth::check()); 
} 

이것은 사용자 모델입니다. Authetication은 Laravel 세션을 사용합니까 아니면 완전히 다른 것입니까?

편집 :

합니까 인증은 임대 시간 또는 유사한 아무것도 시간이 만료 된 후 단지 세션을 삭제하는 것이? 또한 내 데이터베이스 열 "updated_at"및 "created_at"컴퓨터에 비해 잘못된 시간을 제공합니다. 그래서 Auth가 일종의 시간을 확인한다면 오해의 시간 때문에 항상 실패 할 수있는 기회가 될 수도 있습니다.

P.S 이미 stackoverflow에서 다른 솔루션을 살펴 보았습니다.

)는 (

+0

세션 문제와 유사 해 보입니다. 두 번째 질문에 대답하려면 - 인증은 Laravel 세션을 사용합니다. – Laurence

+0

은 id 열'id' 또는'user_id'입니다. 코드를 보면'user_id'라고 부르는 것 같습니까? 그것은 id 여야합니다. – Laurence

+0

세션 설정에 문제가 있다고 생각하기 시작했습니다. 테스트 할 수있는 세션 수명보다 더 많은 설정이 있습니까? 나는 "config/session.php"수명을 변화 시키려고했지만 영향은 없었다. 또한 user_id를 id로 변경하려고 시도했습니다. 어느 것도. – DasBoot

답변

1

가 인증에 매개 변수 ::이 시도처럼 보인다 주셔서 감사합니다; 이것을 사용하여 유효한 시도에 있습니다.

public function store() 
{ 
    $credentials = array('user_displayname'=>Input::get('user_displayname'), 
         'user_password'=> Input::get('user_password')); 
    if (Auth::attempt($credentials)) 
    { 
     return Auth::user(); 
    } 

    return 'not logged'; 
} 
+0

아니요, 사실이 아닙니다. 예가 잘못되었습니다. 읽기 : http://stackoverflow.com/questions/26002552/laravel-4-custom-named-password-column#26002831 –

1

나는 Laravel이 버그가 있다고 생각합니다. Auth :: 시도를 사용하면 자격 증명을 확인한 다음 true를 반환하고 '세션을 파괴합니다'. 그래서 우리는 우리의 URL을 리디렉션하고 Auth :: check()를 사용하여 false를 반환합니다. 세션이 파괴되고 데이터를 잃어서 확인하기 때문입니다.

0

당신은 이미이 점을 보았습니다 만 다른 점은 laravel이 데이터베이스 테이블을 복수 (사용자)와 모델 단수 (사용자)로 유지하는 것에 매우 엄격하다는 것입니다. 모델에서 사용자로 테이블을 명시 적으로 선언했지만 laravel과 혼동을 일으킬 수 있습니다.