博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Laravel使用Passport来创建API用户认证
阅读量:7063 次
发布时间:2019-06-28

本文共 2611 字,大约阅读时间需要 8 分钟。

本文来自pilishen.com----; 欢迎作客我们的php&Laravel学习群:109256050

比如说你要给你的手机APP用户创建API,使用的是你已有的Laravel系统里的数据库,尤其是用户数据。现在我们来看一下,这里使用的是Laravel Passport组件。

我们将要创建三个api,分别是:

  1. Login API
  2. Register API
  3. Details API

(一)安装和配置Passport

composer require laravel/passport复制代码

config/app.php中注册provider

'providers' => [	....	Laravel\Passport\PassportServiceProvider::class,],复制代码

创建Passport需要的数据表:

php artisan migrate复制代码

然后初始化Passport,执行:

php artisan passport:install复制代码

该命令会生成用以后期创建安全令牌(access token)的秘钥,同时也会创建personal accesspassword grant两个客户端(clients)。

接下来,在app/User.php中添加HasApiTokens trait:

然后在app/Providers/AuthServiceProvider.php中添加Passport::routes();

registerPolicies(); Passport::routes(); }}复制代码

config/auth.php中将apidriver改成passport:

[ ... 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ], .....]复制代码

(二)创建相应的api路由

在你的routes/api.php

Route::post('login', 'API\UserController@login');Route::post('register', 'API\UserController@register');Route::group(['middleware' => 'auth:api'], function(){	Route::post('details', 'API\UserController@details');});复制代码

(三)创建相应的controller

路径app/Http/Controllers/API/UserController.php

request('email'), 'password' => request('password')])){ $user = Auth::user(); $success['token'] = $user->createToken('MyApp')->accessToken; return response()->json(['success' => $success], $this->successStatus); } else{ return response()->json(['error'=>'Unauthorised'], 401); } } public function register(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required|email', 'password' => 'required', 'c_password' => 'required|same:password', ]); if ($validator->fails()) { return response()->json(['error'=>$validator->errors()], 401); } $input = $request->all(); $input['password'] = bcrypt($input['password']); $user = User::create($input); $success['token'] = $user->createToken('MyApp')->accessToken; $success['name'] = $user->name; return response()->json(['success'=>$success], $this->successStatus); } public function details() { $user = Auth::user(); return response()->json(['success' => $user], $this->successStatus); }}复制代码

(四)使用rest client来测试api

Login API:

Register API:

Details API:

这个测试前需要添加一些header信息:

'headers' => [    'Accept' => 'application/json',    'Authorization' => 'Bearer '.$accessToken,]复制代码

转载地址:http://suill.baihongyu.com/

你可能感兴趣的文章
Java原始封装常用HttpRequest
查看>>
「镁客·请讲」北斗金控肖鹏麟:发展十多年后,如今的北斗产业在市场面临三大困境...
查看>>
阿里云将在欧洲建立数据中心,预计在伦敦或瑞典落地
查看>>
ASCSDK-------通用包接入文档(UNITY篇)
查看>>
区块链研习 | DAG网络:Blockless无区块概念将解决区块链交易性能问题
查看>>
ASP.NET CORE下取IP地址
查看>>
Jenkins忘记密码的修复方法(Windows/Linux)
查看>>
如何给域名配置https证书
查看>>
mysql数据库的备份与恢复(附测试截图)
查看>>
linux系统部署mongodb数据库
查看>>
区块链应用 | 最全区块链生态图谱发布,一张图看清2400个典型项目
查看>>
AI又来抢饭碗!专利显示迪士尼要开发卡通机器人
查看>>
ajax跨域
查看>>
第二届互联网安全责任论坛举办泛娱乐安全成关注焦点
查看>>
关于阵列卡的配置参数Cache Policy(缓存策略)
查看>>
docker的Dockerfile指令
查看>>
【转】CentOS 7. × 系统及内核升级指南
查看>>
基础练习 数列排序
查看>>
Batch containing 11 record(s) expired due to timeout while requesting metadata
查看>>
Android Activity的生命周期
查看>>