Laravel Auth ::登录

时间:2018-05-23 15:27:35

标签: laravel authentication login null

在我的应用程序中,我正在使用Steam API登录。

当用户在Steam上进行身份验证时,如果数据库中不存在该应用,则应用创建新用户,否则他将带来用户数据。

在这个过程中,即使我创建或只是选择用户信息,我从用户那里得到一个数组,然后我做Auth :: login($ user,true);

在这个函数上它可以工作,如果我调试Auth :: user()他正确返回。

在视图上我也可以使用Auth :: guest()并且它可以工作。

但是如果我转到另一个页面,只有已登录的用户可以加入,Auth :: guest()返回true,Auth :: check()返回false,Auth :: user()返回NULL ...(在控制器)。

如何在新控制器上访问auth方法?

使用身份验证失败的控制器:

<?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 :(得分:2)

由于Laravel的架构,如果直接从控制器的构造中调用,Auth::user()将始终返回null

相反,您应该参考&#39; auth&#39;中间件如下:

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