在我的应用程序中,我正在使用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');
}
}
答案 0 :(得分:2)
由于Laravel的架构,如果直接从控制器的构造中调用,Auth::user()
将始终返回null
。
相反,您应该参考&#39; auth&#39;中间件如下:
class ProfileController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
...