使用Laravel API端点在重定向上获取经过身份验证的用户

时间:2019-07-02 13:33:37

标签: php laravel-passport laravel-5.8

我正在使用Laravel 5.8构建API端点,并使用Passport处理API身份验证。因此,这是React应用程序的简单逻辑,它将消耗API

  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端点的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

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

{
    "api_token": "kdlksjdflksjdlfkjsdlkfjslkdfjskjflksdjflskdjflskdjlfksjfd"
}

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

关于注册: 您只是发送一条消息,说成功或其他。如果状态为200,则表示该用户已注册。