Token.php 1.9 KB
<?php

namespace app\api\controller;

use app\common\controller\Api;
use fast\Random;

/**
 * Token接口
 * @ApiWeigh(2)
 */
class Token extends Api
{
    protected $noNeedLogin = [];
    protected $noNeedRight = '*';

    /**
     * @ApiWeigh    (99)
     * @ApiTitle    (检测Token是否过期)
     * @ApiSummary  (检测Token是否过期)
     * @ApiMethod   (GET)
     * @ApiHeaders  (name="token", type="string", required=true, description="请求的Token")
     * @ApiReturn({
        "code": 1,
        "msg": "",
        "time": "1621402970",
        "data": {
            "token": "545eed64-39c4-437e-8285-ac94c03e4921", //token
            "expires_in": 2591951 //剩余有效时间
        }
    })
     */
    public function check()
    {
        $token = $this->auth->getToken();
        $tokenInfo = \app\common\library\Token::get($token);
        $this->success('', ['token' => $tokenInfo['token'], 'expires_in' => $tokenInfo['expires_in']]);
    }

    /**
     * @ApiWeigh    (97)
     * @ApiTitle    (刷新Token)
     * @ApiSummary  (刷新Token)
     * @ApiMethod   (GET)
     * @ApiHeaders  (name="token", type="string", required=true, description="请求的Token")
     * @ApiReturn({
        "code": 1,
        "msg": "",
        "time": "1621403556",
        "data": {
            "token": "175c6d84-42af-4c59-bce0-ad8a66eb5f3f", //token
            "expires_in": 2592000 //剩余有效时间
        }
    })
     */
    public function refresh()
    {
        //删除源Token
        $token = $this->auth->getToken();
        \app\common\library\Token::delete($token);
        //创建新Token
        $token = Random::uuid();
        \app\common\library\Token::set($token, $this->auth->id, 2592000);
        $tokenInfo = \app\common\library\Token::get($token);
        $this->success('', ['token' => $tokenInfo['token'], 'expires_in' => $tokenInfo['expires_in']]);
    }
}