这是我参与8月更文挑战的第22天,活动详情查看:8月更文挑战
一、登陆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
}
以后写的其他接口也类似这样去写接口文档,接口文档是很重要的,方便前端去对接,也方便自己查阅,不要忽略了,这边写个例子,以后不在赘述。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!