首页 文章

Laravel 5.3 身份验证问题

提问于
浏览
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 回答

  • 3

    获取用户对象:

    $user = $request->user();
    

    要么:

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

    您可以使用:

    Auth::user();
    

    auth()->user();
    

    $request->user();
    
  • 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;
    

    等等

相关问题