기본 User모델 대신 다른모델을 쓰시려면
app/config/auth.php 설정파일에 존재하는 model 값을 해당 모델로 변경하셔야 합니다
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\User::class, ], // 'users' => [ // 'driver' => 'database', // 'table' => 'users', // ], ],
https://github.com/laravel/laravel/blob/0869d963aa96e2a9d4ab58cb451e35e9a31b07d9/config/auth.php#L70
제가 아는대로 답변드립니다.
라라벨의 기본 Auth 를 활용하여 logout 을 시도하면 remember_token 관련 아래의 순서로 실행됩니다.
Illuminate\Foundation\Auth\AuthenticatesUsers 의 logout 메소드 호출
이 메소드의 $this->guard()->logout() 호출
여기서 guard()는 Illuminate\Contracts\Auth\StatefulGuard 인터페이스를 상속한 Illuminate\Auth\SessionGuard 클래스의 logout() 호출
if (! is_null($this->user)) {
$this->cycleRememberToken($user);
}
cycleRememberToken 메소드는 아래와 같습니다.
protected function cycleRememberToken(AuthenticatableContract $user)
{
$user->setRememberToken($token = Str::random(60));
$this->provider->updateRememberToken($user, $token);
}
Illuminate\Foundation\Auth\User 클래스의 setRememberToken 메소드를 실행함 (상속)
여기의 setRememberToken 메소드는 Illuminate\Auth\Authenticatable trait 으로 처리
이 trait 의 setRememberToken 메소드를 오버라이드 처리하면 됨
public function getRememberToken()
{
return null;
}
public function setRememberToken($value)
{
// noting to do
}
안녕하세요.
로그아웃의 흐름에 대해서 이해할 수 있는 기회를 주셔서 감사합니다.
저같은 경우 모델을 App\User을 지우고 새로 모델을 만들었는데
단순하게 그곳에다가 위의 오버라이드 소스를 넣기만 하면 동작하게 되는것인가요?
현재 사용하고 있는 모델의 장소는
App\models\members.php 입니다.
App\User 는 검색해도 나오지 않네요.
현재 사용하고 있는 모델이 있다면 해당 모델에 메소드를 오버라이드 (없다면 추가) 하시면 됩니다.
물론 현재 모델이 "Illuminate\Foundation\Auth\User" 를 상속하고 있으면 됩니다.
답변 감사합니다. 어느정도 해결된 것 같습니다.
나머지 자잘한 에러들이 있습니다만 그건 스스로 해결해보겠습니다!
신세 지게 되었습니다. (_ _)
User모델에 아래 함수를 추가하라고 하네요 (오버라이딩)
https://stackoverflow.com/a/43467377
/** * Overrides the method to ignore the remember token. */ public function setAttribute($key, $value) { $isRememberTokenAttribute = $key == $this->getRememberTokenName(); if (!$isRememberTokenAttribute) { parent::setAttribute($key, $value); } }
답변 감사합니다.
다만 아직 해결이 안됐어요.. 라라벨 5.5 사용중에 있구요.
경로는 아마도
vendor/laravel/framework/src/llluminate/Auth/Authenticatable.php
이곳인것 같아서 함수를 추가해보았는데 로그아웃 버튼 눌러도 에러는 사라졌는데 아무런 반응이 없이 로그아웃 되지가 않네요.
넣은 곳이 잘못되었는가 잘 모르겠네요.
User모델은 app폴더 바로 아래 존재할듯 싶습니다
기본 네임스페이스가 App\User 입니다
데론님 답변 감사합니다.
어느정도 해결이 된 것 같습니다.
아직 조그마한 에러들이 남아 있는데 그건 스스로 해결해볼게요!
라라벨 다음 버전에는 이런 부분도 커스터마이징 될 수 있게 변했으면 좋겠네요~ㅎㅎ
현재 별도로 구성된 테이블로 라라벨 기본 기능인 auth로 아이디숫자로 판별해서 로그인까지 되어 있는 상태입니다.
테이블 같은 경우, remember_token은 존재하지 않습니다. (구조상 추가할 수 없는 상태입니다)
로그아웃 하려면 아래와 같이 에러메시지가 나옵니다.
remember_token이 존재 하지 않기 때문인데 테이블에 컬럼 하나 추가하면 해결될 문제로 보입니다만
여건이 그렇지 못하기 때문에 아예 비활성화를 시켜버리고 싶습니다. 애시당초 기억시킬 필요가 없는 사이트입니다!
어디가서 저걸 해지시킬 수가 있을까요?