首页 > 解决方案 > 使用 Laravel API 端点在重定向时获取经过身份验证的用户

问题描述

我正在使用 Laravel 5.8 构建 API 端点并使用 Passport 处理 API 身份验证。下面是使用 API 的 React 应用程序的简单逻辑

  1. 成功注册会将用户重定向到用户仪表板
  2. 成功登录会将用户重定向到用户仪表板
  3. 仪表板显示用户详细信息

我已经设置了这样的端点

Route::post('register', 'BaseController@register');

Route::post('login', 'BaseController@login);

BaseController 现在看起来像这样

public function register(Request $request)
{
    $validator = Validator::make($request->all(), [
        'firstname' => 'required',
        'lastname'  => 'required',
        'username'  => 'required|email',
        'password'  => 'required'
    ]);

    if ($validator->fails()) {
        return response()->json(['Error', $validator->errors()], 401);
    }

    $user = User::create([
        'firstname' => $request->firstname,
        'lastname'  => $request->lastname,
        'username'  => $request->username,
        'password'  => bcrypt($request->password)
    ]);

    $success['token'] = $user->createToken('Pramopro')->accessToken;

    return response()->json(['success' => $success, 'message' => 'You have successfully registered'], 200);
}

public function login() {
    if (Auth::attempt(['username' => request('username'), 'password' => request('password')])) {
        $user = Auth::user();
        $success['token'] = $user->createToken('Pramopro')->accessToken;

        return response()->json(['success' => $success, 'message' => 'You have succesfully signed in.'], 200);
    }
    else
    {
        return response()->json(['error' => 'Unauthorised'], 401);
    }
}

在 Postman 上测试时,两个 API 端点都可以正常工作。

按照逻辑,设置将显示经过身份验证的用户信息的 API 端点的最佳方法是什么?

标签: phplaravel-passportlaravel-5.8

解决方案


登录: 我建议您不需要将消息发送回前端或设备。只需发送令牌,如下所示:

{
    "api_token": "kdlksjdflksjdlfkjsdlkfjslkdfjskjflksdjflskdjflskdjlfksjfd"
}

如果状态为 200 或 api_token 的值为 true,您可以显示成功消息。

至于注册: 您只需发送一条消息说成功或其他。如果状态为 200,则可以理解为用户已注册。


推荐阅读