php - 使用 Laravel API 端点在重定向时获取经过身份验证的用户
问题描述
我正在使用 Laravel 5.8 构建 API 端点并使用 Passport 处理 API 身份验证。下面是使用 API 的 React 应用程序的简单逻辑
- 成功注册会将用户重定向到用户仪表板
- 成功登录会将用户重定向到用户仪表板
- 仪表板显示用户详细信息
我已经设置了这样的端点
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 端点的最佳方法是什么?
解决方案
登录: 我建议您不需要将消息发送回前端或设备。只需发送令牌,如下所示:
{
"api_token": "kdlksjdflksjdlfkjsdlkfjslkdfjskjflksdjflskdjflskdjlfksjfd"
}
如果状态为 200 或 api_token 的值为 true,您可以显示成功消息。
至于注册: 您只需发送一条消息说成功或其他。如果状态为 200,则可以理解为用户已注册。
推荐阅读
- c# - 使用 GetFileFromApplicationUriAsync 获取 json 文件时出现“值不在预期范围内”异常
- python-3.x - 如何使用 GPU 运行张量流?
- c# - 由于 DayOfWeek 对字符串数组进行排序
- javascript - 为什么在这里使用指数枚举键?
- java - 使用 JsonPath Java 获取字符串值
- apache-kafka - 一个kafka主题单位时间内收到的新消息数
- java - 即使在 Android Oreo 中也更改了剪贴板上的背景通知功能
- spring - 如何在 postgres 中添加枚举字段?
- sql - Oracle SQL 中的 @{ } {} 运算符?
- python - 如何执行嵌套的 PyCode 对象