2016-06-17 3 views
1

ID로 다른 사용자를 로그 아웃하도록하는 간단한 방법이 있는지 궁금합니다. 예를 들어 현재 차단 된 사용자를 차단해야 자신의 상태를 차단 한 후 로그 아웃하고 싶습니다.Laravel에서 사용자 ID를 사용하여 강제로 로그 아웃 할 수 있습니까?

P. 각 요청을 확인하기 위해 미들웨어를 사용할 수 없습니다.

+0

이 왜 미들웨어를 사용할 수 있습니까? – PeterPan666

+0

@ PeterPan666 프로젝트가 매우 커서 차단 된 사용자에 대한 각 요청을 확인하면 성능이 저하 될 수 있기 때문입니다. 이미 로그인 상태가 차단되었는지 확인하고 있습니다. – Kin

답변

7

나는 사용자가 이미 추가 데이터베이스 쿼리가 여기에 필요하지 않습니다가로드되는 인증합니다 미들웨어

if (!Auth::user()->isActive()) { 
    Auth::logout(); 

    return Redirect::home(); 
} 

안에이 작업을 수행.

저는 성능상의 문제라고 생각하지 않습니다. 사용자가 인증해야하는 경우에만 if 문을 수행하면됩니다.

+0

어떻게 이것을 Laravel 5.4에서합니까? auth 미들웨어는 이제'Illuminate \ Auth \ Middleware \ Authenticate'에 있습니다. 나는 그것을 만들고/app/Http/Middleware/Authenticate.php'에 복사하고 내 조건문을 추가합니까? – w1n78

+1

LogoutDisableUser 미들웨어를 수행하고 인증 미들웨어 전에 호출 할 수 있으며 "인증"이라는 그룹을 만들고 내부의 인증 미들웨어를 비활성화 한 다음 로그 아웃을 호출 할 수도 있습니다. – PeterPan666

1

@ PerterPan666 감사합니다. 나중에 미들웨어를 만들고 웹 그룹에 추가했습니다.

public function handle($request, Closure $next) 
    { 
     if (Auth::check()) 
     { 
      if (Auth::User()->is_active != 'Y') 
      { 
       Auth::logout(); 
       return redirect()->to('/')->with('warning', 'Your session has expired because your account is deactivated.'); 
      } 
     } 
     return $next($request); 
    } 
1

당신이 데이터베이스 세션 드라이버를 사용하는 경우 그것은 매우 쉽습니다 :

DB::table('sessions')->where('user_id', $userId)->delete(); 
관련 문제