我在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(),但无论如何都会带来相同的结果。
答案 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;
等