2017-03-19 4 views
0

construct()에서 미들웨어 설정에 문제가 있습니다.사용자 역할에 따라 Laravel에서 미들웨어를 설정하는 방법은 무엇입니까?

나중에 하나만 선택하면 여기 미들웨어로 인증됩니다.

내 관리자가 사용자의 로그인 페이지로 퇴장했습니다.

미들웨어가 없으면 관리자가 laravel-filemanager 창에 로그인하라는 메시지가 표시되므로 (사용자가 탐색 할 수 있음) lfm에 문제가 있습니다. 공공 기능 __construct() {

$middleware = ''; 
    if(Session::get('user_role') == 'admin'){ 
      $middleware = 'auth:admin'; 
     } else { 
      $middleware = 'auth'; 
     } 
    $this->middleware($middleware); 
} 

답변

0

당신은 생성자에서 HTTP 요청 또는 세션 정보를 액세스 할 수 없습니다

다음은 내 코드입니다.

이전 버전의 Laravel에서는 컨트롤러의 생성자에서 세션 변수 나 인증 된 사용자에게 액세스 할 수있었습니다. 이것은 결코 프레임 워크의 명백한 특징이되는 것은 아닙니다. Laravel 5.3에서는 미들웨어가 아직 실행되지 않았기 때문에 컨트롤러의 생성자에서 세션이나 인증 된 사용자에게 액세스 할 수 없습니다.

출처 : https://laravel.com/docs/5.3/upgrade (5.2에서 5.3.0로 업그레이드> 컨트롤러)

+0

다음에 제안 주위의 모든 작업? 나는 현재 laravel 5.4이다. – PRINCE

+0

다른 경로를 만들고 경로에 미들웨어를 정의하십시오. – sisve

+0

나는 당신의 제안을 시도하고 아래를했다 : Route :: get ('/ web-messages.html', 'DashboardController @ getWebMessages') -> 미들웨어 ('auth : admin') -> name ('admin.web -messages '); 아직 로그 아웃하고 페이지를 방문하면 액세스 할 수 있습니다! – PRINCE