Laravel Auth :: вход - PullRequest
       9

Laravel Auth :: вход

0 голосов
/ 23 мая 2018

В моем приложении я использую логин из Steam API.

Когда пользователь проходит аутентификацию на Steam, приложение создает нового пользователя, если его нет в базе данных, иначе он приноситпользовательские данные.

В этом процессе, даже если я создаю или просто выбираю информацию о пользователе, я получаю массив от пользователя и выполняю Auth :: login ($ user, true);.

В этой функции это работает, если я отлаживаю Auth :: user (), он возвращает корректно.

В представлении я тоже могу использовать Auth :: guest (), и это работает.

Но если я перехожу на другую страницу, к которой могут присоединиться только зарегистрированные пользователи, Auth :: guest () возвращает true, Auth :: check () возвращает false, Auth :: user () возвращает NULL ... (на контроллере).

Как я могу получить доступ к методам аутентификации на новом контроллере?

Контроллер, который завершается ошибкой с аутентификацией:

<?php

namespace App\Http\Controllers\Profile;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\User;
use Auth;

class ProfileController extends Controller
{
    public function __construct()
    {
        if(Auth::guest()) {
            return redirect()->route('home');
        }
    }

    public function index()
    {
        // die(var_dump(Auth::user()->id));
        return view('pages/profile/profile');
    }
}

1 Ответ

0 голосов
/ 23 мая 2018

Из-за архитектуры Laravel, Auth::user() всегда будет возвращать null, если вызывается напрямую из конструкции контроллера.

Вместо этого вы должны ссылаться на промежуточное ПО 'auth', как показано ниже:

class ProfileController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }
...
...