laravel登陆、退出登陆、刷新token的api编写
一、登陆api
1.1、创建登陆api控制器
运行命令php artisan make:controller Auth/LoginController:
控制器写入一下方法,代码:
<?php
namespace AppHttpControllersAuth;
use AppHttpControllersBaseController;
use IlluminateHttpRequest;
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 IlluminateHttpJsonResponse
*/
//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 IlluminateHttpJsonResponse
*/
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、创建登陆路由
在routesauth.php文件下创建登陆路由:
// 登陆
$api->post(login, [LoginController::class, login]);
1.4、创建登陆表单验证
运行命令:php artisan make:request Auth/LoginRequest
在LoginRequest.php写入如下代码:
<?php
namespace AppHttpRequestsAuth;
use AppHttpRequestsBaseRequest;
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
}
以后写的其他接口也类似这样去写接口文档,接口文档是很重要的,方便前端去对接,也方便自己查阅,不要忽略了,这边写个例子,以后不在赘述。
上一篇:
IDEA上Java项目控制台中文乱码
