本文目录
一、登陆api
1.1、创建登陆api控制器
运行命令php artisan make:controller Auth/LoginController
:
控制器写入一下方法,代码:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\BaseController;
use Illuminate\Http\Request;
class LoginController extends BaseController
{
/**
* 登陆
*/
public function login()
{
$credentials = request(['email', 'password']);
if (!$token = auth('api')->attempt($credentials)) {
return $this->response()->errorUnauthorized();
}
return $this->respondWithToken($token);
}
/**
* Get the authenticated User.
* 获取个人信息
* @return \Illuminate\Http\JsonResponse
*/
//public function me()
//{
// return response()->json(auth('api')->user());
//}
/**
* 退出登陆
*/
public function logout()
{
auth('api')->logout();
return response()->json(['message' => 'Successfully logged out']);
}
/**
* Refresh a token.
* 刷新token
* @return \Illuminate\Http\JsonResponse
*/
public function refresh()
{
return $this->respondWithToken(auth('api')->refresh());
}
/**
* 格式化返回
*/
protected function respondWithToken($token)
{
// 方法一
return response()->json([
'access_token' => $token,
'token_type' => 'Bearer',
'expires_in' => auth('api')->factory()->getTTL() * 60
]);
// 方法二
// return $this->response()->array([
// 'access_token' => $token,
// 'token_type' => 'Bearer',
// 'expires_in' => auth('api')->factory()->getTTL() * 60
// ]);
}
}
1.2 修改token过期时间
在config/jwt.php
中找到
再去.env
配置环境中配置JWT_TTL
,默认为一小时:
1.3、创建登陆路由
在routes\auth.php
文件下创建登陆路由:
// 登陆
$api->post('login', [LoginController::class, 'login']);
1.4、创建登陆表单验证
运行命令:php artisan make:request Auth/LoginRequest
在LoginRequest.php
写入如下代码:
<?php
namespace App\Http\Requests\Auth;
use App\Http\Requests\BaseRequest;
class LoginRequest extends BaseRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'email' => 'required|email ',
'password' => 'required|min:6|max:16',
];
}
}
修改LoginController.php
中登陆控制器,使用我们验证的request
:
效果:
二、退出登陆api
2.1 退出登陆路由
// 退出登陆,(前提在登陆后才需要退出登陆)
$api->post('logout', [LoginController::class, 'logout']);
三、刷新token
3.1、刷新token路由
// 刷新token
$api->post('refresh', [LoginController::class, 'refresh']);
四、编写文档
在showdoc
里去编写我们写的接口文档:
##### 简要描述
- 用户注册接口
##### 请求URL
- `/api/auth/register `
##### 请求方式
- POST
##### 参数
|参数名|必选|类型|说明|
|:---- |:---|:----- |----- |
|name |是 |string |用户名 最大长度16 |
|email |是 |string | 邮箱 邮箱格式 |
|password |是 |string | 密码 最小长度6 最大长度16 |
|password_confirmation |是 |string | 确认密码 和密码一样 |
##### 返回示例
- 状态码 201 创建成功
- 状态码 422 参数错误
{
"message": "The given data was invalid.",
"errors": {
"name": [
"名称 不能为空。"
],
"email": [
"邮箱 不能为空。"
],
"password": [
"密码 不能为空。"
]
},
"status_code": 422
}
以后写的其他接口也类似这样去写接口文档,接口文档是很重要的,方便前端去对接,也方便自己查阅,不要忽略了,这边写个例子,以后不在赘述。
在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。