Laravel5.4 Api认证Demo
路由 routes/api.PHP
Route::group(['namespace' => 'Api'], function() { //测试 Route::get('index', 'ApiBaseController@index'); //获取的token Route::get('get-token', 'ApiBaseController@getToken'); });
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
原文地址:https://www.jb51.cc/php/2958030.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。