laravel登陆、退出登陆、刷新token的api编写

一、登陆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的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你华还是你华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值