PHP

首页 -  PHP  -  Laravel5.4 Api认证Demo

Laravel5.4 Api认证Demo

Laravel5.4 Api认证Demo

为大家提供一个简单的laravel api接口认证Demo

  1. 路由 routes/api.php

Route::group(['namespace' => 'Api'], function() {
    //测试
    Route::get('index', 'ApiBaseController@index');
    //获取的token
    Route::get('get-token', 'ApiBaseController@getToken');
});

2.定义配置文件 config下新建token.php


3.认证类

<?php

namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class ApiBaseController extends Controller
{


    //认证的key
    private static $key='mytoken';
    //过期时间秒为单位
    public static $Cache = '7200';
    public function __construct( Request $request )
    {
        if( $request->path() != 'api/get-token')
        {
            $token = trim($request->input('token'));
            if( config('token.token') != $token )
            {
                $obj = new \stdClass();
                $obj->state = 0;
                $obj->data = '';
                $obj->msg = 'token不正确';
                echo json_encode($obj);
                exit();
            }

            if( config('token.expiration') < time() )
            {
                $obj = new \stdClass();
                $obj->state = 0;
                $obj->data = '';
                $obj->msg = 'token失效';
                echo json_encode($obj);
                exit();
            }

        }
    }


    /**
     * @param Request $request
     * 获取token
     */
    public function getToken( Request $request )
    {
        $key = trim($request->input('key'));
        if( $key == static::$key )
        {
            if( config('token.expiration') > time() )
            {
                $obj  = array();
                $obj->state = 1;
                $obj->data = config('token.token');
                $obj->msg = 'Token为'.config('token.token');
                return json_encode($obj);;
            }
            $token = str_random(25);
            $time = time()+static::$Cache;
            $str = "<?php \n return [\n'token' => '".$token."', \n'expiration'=>'".$time."' \n];";
            file_put_contents(config_path().'/token.php',$str);
            $obj = new \stdClass();
            $obj->state = 1;
            $obj->data = $token;
            $obj->msg = '生成的Token为'.$token;
            return json_encode($obj);
        }else
        {
            $obj = new \stdClass();
            $obj->state = 0;
            $obj->data = '';
            $obj->msg = 'key不正确';
            return json_encode($obj);
        }
    }


    public function index(  Request $request )
    {

        dd( date("Y-m-d H:i:s",config('token.expiration')) );
    }
}


4.请求:

生成token http://127.0.0.1/api/get-token?key=你的key值

测试 http://127.0.0.1/api/index?token=生成的token


你也可以使用laraver的 laravel/passport配置如下:

http://www.xiaoshu168.com/php/227.html


(0)
分享:

本文由:xiaoshu168 作者:xiaoshu发表,转载请注明来源!

标签:

相关阅读