Laravel 5.3认证问题

时间:2017-01-10 16:05:45

标签: laravel laravel-5.3

我在Laravel 5.3中抓住当前经过身份验证的用户时遇到问题。更具体地说,我正在向我的api.php文件发出HTTP请求,该文件的路由定义为api / test / create。

控制器代码:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Test;

class TestController extends Controller
{
    public function store(Request $request) {
        $this->validate($request, [
            'test_name' => 'required',
            'youtube_id' => 'required',
            'is_live_test' => 'required',
        ]);

        //Laravel 5.3 allows to get the user via request
        $user = $request->user;

        if($user) {
            return 'We are logged in';
        } else {
            return 'We are not logged in';
        }

        return '';      
    }
}

每次返回“我们都没有登录”。为了测试这一点,我在我的刀片文件中引用了{{Auth :: check()}},并返回为“1”。我不太清楚为什么Controller无法识别用户已登录;任何想法?

我尝试过引用身份验证的不同变体,包括导入Facade和执行Auth :: check(),Auth :: user(),但无论如何都会带来相同的结果。

3 个答案:

答案 0 :(得分:3)

获取用户对象:

$user = $request->user();

或者:

$user = auth()->user();

答案 1 :(得分:3)

您可以使用:

Auth::user();

auth()->user();

$request->user(); 

答案 2 :(得分:1)

您可以直接在Controller中使用 Auth :: check()方法。

if (Auth::check()){
    // User is logged in
    // Do something with the Authenticated User.
}else
{
    // User is not logged in
}  

让用户数据做这样的事情

$user = Auth::user();

$userId = $user->id;