laravel passport 不支持 多表登录 所以自己写了一个
$ composer require chencongbao/laravel-api
// laravel < 5.5
Bob\LaravelApi\ApiServiceProvider::class,
更改认证驱动
在 config/auth.php 中,更改 guards.api.driver
为 api
在 UserModel 中添加 trait
在 config(auth.provider.xx.model)
的类中,添加 use Bob\LaravelApi\Models\Traits\HasApiApps
运行数据迁移
php artian migrate
开始使用吧
use Bob\LaravelApi\Api;
'users' 为您的不同的 provider
$access_token = Api::generateAccessToken(User::find(1), 'users');
header 上进行认证
provider 为您的认证provider 比如 admin 表的 provider 为admins
例如:
Authorization: Bearer 3857d7d56f4ffe1ab57b8a8f292b85fa
provider:users
只需要在增加 'auth:api'
的 middleware 即可,增加后,$request->user()/$request->user
即为认证用户
use Illuminate\Http\Request;
Route::middleware('auth:api')->get('user', function(Request $request) {
dd($request->user());
// $request->user 获取 user_id
});
access_token 有效时间默认为 长期有效,当然,您可以自由设置该值:
// 在 AppServiceProvider 的 register 方法中增加
use Bob\LaravelApi\Api;
Api::$ttl = 7200;
// Api::setTtl(7200);
AccessTokenNotProvidedException
当客户端没有提供 access_token 时,抛出 AccessTokenNotProvidedException
异常,如果不进行任何额外的操作,默认将返回 {"code":1,"message":"AccessToken Is Not Provided"}
InvalidAccessTokenException
当客户端提供了无效的 access_token 时,抛出 InvalidAccessTokenException
异常,如果不进行任何额外的操作,默认将返回 {"code":2,"message":"AccessToken Is Invalid"}
AccessTokenExpiredException
当客户端提供的 access_token 已过期时,抛出 AccessTokenExpiredException
异常,如果不进行任何额外的操作,默认将返回 {"code":3,"message":"AccessToken Is Expired"}
GenerateAccessTokenException
当服务端生成 access_token 失败时,抛出 GenerateAccessTokenException
异常,如果不进行任何额外的操作,默认将返回 {"code":4,"message":"xxxx"}
以上异常如果不想使用默认的信息,均可自行捕获更改相关信息
MIT
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。