Получить данные аутентификации внутри проблемы Конструктора в Laravel5.3.19

Я обновил Laravel с 4.2 до laravel5.3, но не могу получить доступ к данным аутентификации внутри Конструктора контроллера

У меня как Middleware ниже, но он никогда не работает для меня

use App\Http\Controllers\BaseController;

use Closure;
use Illuminate\Contracts\Auth\Guard;
use Redirect;
use Auth;
use App\User;


class DashboardController extends BaseController
{

    public $user;

    public function __construct(Guard $guard, User $user)
    {
        $this->middleware(function ($request, $next) {
            $this->user = Auth::user();
            return $next($request);
        });
        //$this->userID = Auth::user()?Auth::user()->id:null;

        dd($user);// Result attributes: []
        dd($guard);
        dd($this->user);

    }

}

Результат после DD()

дд ($ охранник); Это результат $ guard

DD ($ this-> пользователь);

NULL

Он вернет значение Null, когда я добавлю свойство пользователя.

1 ответ

Решение

Этого следовало ожидать. Причина, по которой вы должны назначить пользователя внутри middleware Закрытие происходит потому, что промежуточное программное обеспечение сеанса еще не запущено. Таким образом, замыкание, которое вы имеете выше, на самом деле не будет вызываться до тех пор, пока в процессе выполнения не будет.

Если вы переместите dd($this->user) в закрытии промежуточного программного обеспечения или в одном из ваших методов маршрутизации в этом контроллере он должен работать абсолютно нормально.

Кроме того, только к вашему сведению, в вашем промежуточном программном обеспечении вы можете получить user экземпляр из запроса т.е. $request->user() даст вам аутентифицированного пользователя.

Надеюсь, это поможет!

Другие вопросы по тегам