Laravel - 登录时返回用户和身份验证详细信息

Posted

技术标签:

【中文标题】Laravel - 登录时返回用户和身份验证详细信息【英文标题】:Laravel - return user and authentication details upon login 【发布时间】:2018-07-28 04:13:02 【问题描述】:

对 Laravel 完全陌生,并尝试使用 Passport 身份验证来进行登录调用。该调用返回用户身份验证详细信息:


    "token_type": "Bearer",
    "expires_in": 600,
    "access_token": "...",
    "refresh_token": "..."

但我也想在同一响应中获取用户详细信息:

 
    "user_id": "1",
    "forename": "Mustafa",
    "surname": "3241234",
    "email": "mustafaaaa@gmail.com"
     ...
    "access_token": "...",
    "refresh_token": "..."

这可能吗?这是我的控制器代码:

public function login(Request $request)


    $this->validate($request, [
        $this->username() => 'required|string|email|max:255',
        'password' => 'required|string',
    ]);

    $params = [
        'grant_type' => 'password',
        'client_id' => $this->client->id,
        'client_secret' => $this->client->secret,
        'username' => request('email'),
        'password' => request('password'),
        'scope' => '*'
    ];

    $request->request->add($params);

    $proxy = Request::create(
        'oauth/token',
        'POST'
    );

    return Route::dispatch($proxy);

【问题讨论】:

有办法。检查这个问题,这是第一个答案***.com/questions/41746078/… 【参考方案1】:

我认为这应该没问题,那么您应该发送令牌来检索用户详细信息... 所以你的路由文件中有这样的东西

Route::group(['middleware' => 'auth:api'], function() 
    Route::post('user', 'MyController@details');
    );

然后在你的控制器中

public function details()

    $user = Auth::user();
    return response()->json(['success' => $user], $this->successStatus);

当然有帮助...

【讨论】:

非常感谢,这正是我想要做的。我以为我可以使用访问令牌发送用户数据,但没有运气

以上是关于Laravel - 登录时返回用户和身份验证详细信息的主要内容,如果未能解决你的问题,请参考以下文章

Laravel身份验证,我无法检索登录用户

Laravel 5.3记住我身份验证问题

Laravel 5.3记住我身份验证问题

使用 Passport 和 Laravel 进行身份验证时返回访问令牌和用户

Laravel JWT 身份验证返回 False

强制 Laravel 使用旧版身份验证登录用户