2016-09-10 2 views
0

인증 미들웨어에 문제가 있습니다. 미들웨어를 라우트 그룹에 넣고 사용자 테이블을 롤백했습니다. 나는 앱이 내 로그인/싱글 업 페이지로 리다이렉트 할 것을 기대했으나 대신에 그렇게하지 않았으며, 단지 "내게 대시 보드 뷰에서 Auth::user() 함수를 참조하는 비 오브젝트의 속성을 얻으려고했다")에 대한 액세스 권한이 없습니다.laravel 인증 미들웨어가 로그인 페이지로 리디렉션되지 않습니다.

다음
Route::group(['prefix' => '/{username}/', 'middleware' => ['existing_user', 'auth']], function(){ 
    Route::get('/dashboard', function(){ 
     return view('dashboard'); 
    }); 
}); 

내보기입니다 :

여기 내 경로 코드의 데이터베이스에서 사용자를 삭제하면 Laravel가 자동으로 사용자 세션을 삭제된다는 것을 의미합니다 경우에도

<h1>{{ Auth::user()->username }}</h1> 

, 나는 확실하지 않았다 .

도움 주셔서 감사합니다.

+1

가, 세션이 여전히 laravel 유효 조금 당신의 개념을 삭제하고이 없습니다 그 사용자를 데이터베이스에서 더 이상 찾으려면 auth() -> user()가 null이되었습니다. 그래서 ** 비 객체 ** 오류의 속성을 얻으려고합니다. – prateekkathal

답변

0

도메인에 대한 브라우저 캐시를 지우면 사용자 세션을 삭제할 수 있습니다 (예 : localhost).

Laravel은 세션 추적을 위해 Auth 클래스을 사용합니다. 세션이 클라이언트서버 쪽에서 작동하므로 어느 곳에서나 세션을 삭제해야합니다. 클라이언트 측의 제거는 브라우저의 쿠키를 통해 이루어지며 클라이언트 측의 제거는 파일, 데이터베이스 또는 Redis 등을 통해 이루어질 수 있습니다.

따라서 사용자를 에서 제거하는 경우 사용자 테이블은이 경우에 적합하지 않습니다. 데이터베이스에서 사용자를 삭제해도 Auth 클래스가 더 이상 세션이 없다는 것을 알 수 없습니다. 실제로 auth()->user()null이되고 auth()->check()은 여전히 ​​true이됩니다.

희망이 :)

사용자 세션이 이후로 ... (로컬 호스트 말) 도메인에 대한 브라우저의 쿠키를 삭제하여 삭제해야
관련 문제