2017-09-11 1 views
0

여러 사용자 역할 및 작업으로 응용 프로그램을 구축 중입니다. 나는 공식 laravel 의사 (https://laravel.com/docs/5.5/middleware#middleware-parameters)를 따라 갔다.laravel 5.5 생성자 내부에서 사용자 정보 얻기

하지만 내 컨트롤러의 생성자 (위의 미들웨어를 호출 한 곳)에서 Auth facade를 사용하여 사용자 세부 정보를 얻습니다. 필자는 Auth facade를 사용하는 방법을 알고 있으며, 응용 프로그램 내부의 여러 위치에 구현했습니다. 하지만 생성자 내부에서 사용할 때 null을 반환합니다 (로그인 상태에서 - 이중 체크).

내가 이런 식으로 구현, 나는

public function __construct() 
{ 
    $role = Auth::user()->role; 
    $this->middleware('auth'); 
    $this->middleware('checkRole:$role'); 
} 

PS를 (등록 된 사용자 만 해당 페이지에 액세스 할 수 있기 때문에) 두 개의 컨트롤러를 호출해야 : 난 아직 보호로 생성자 외부 $ 역할 변수를 초기화하려 작동 안함. 어떤 제안이 도움이 될 것입니다

감사합니다.

+0

내가 이해가 안 돼요. – Grald

답변

0

왜냐하면 생성자가 미들웨어보다 먼저 생성되기 때문입니다. 이것이 바로 null을 반환하는 이유입니다.

이 답변 propably 문제를 해결할 : laravel는 생성자 내부 인증을 허용하지 않은 이유 Can't call Auth::user() on controller's constructor