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 '';      
    }
}

每次都返回“我们没有登录”。为了测试这个问题,我在我的blade文件中引用了{{ Auth :: check() }},它返回为“1”。我不太确定控制器为什么无法识别用户已经登录。你有什么想法吗?
我已经尝试了不同的身份验证引用方式,包括导入Facade并使用Auth::check()、Auth::user(),但结果始终相同。

1
它是 $request->user(),你需要确保路由使用 auth 中间件。 - Derek Pollard
1
api 中间件应该具有 auth:api - Derek Pollard
1
当使用api路由时,你需要设置护照:https://laravel.com/docs/5.3/passport - Derek Pollard
1
更具体地说,让您的用户使用API:https://laravel.com/docs/5.3/passport#consuming-your-api-with-javascript - Derek Pollard
1
没问题。很高兴能帮忙! - Derek Pollard
显示剩余8条评论
3个回答

3

使用以下代码获取用户对象:

$user = $request->user();

或者:

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

谢谢提醒 - 但我仍然遇到“未登录”的问题。 - boisterouslobster
请展示路由文件的内容。另外,您使用哪个路由文件? - Alexey Mezenin

3

您可以使用:

Auth::user();

同时

auth()->user();

also

$request->user(); 

1

您可以直接在控制器中使用 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;

等等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接