stokoe / tokenable
此包已被弃用,不再维护。未建议替代包。
为任何模型添加API令牌
1.1
2019-07-12 22:50 UTC
This package is auto-updated.
Last update: 2020-09-12 15:36:20 UTC
README
轻松创建Laravel模型的API令牌。
此包面向那些想要构建自己的认证系统的人。或者只需要API令牌做一些小事情,不想引入整个 laravel/passport
,例如。
它通过在您希望生成令牌的模型(s)上使用特质来实现。特质包含与API Token模型的一对多多态关系。它还包含一些有用的辅助函数,以利用此包。
安装
$ composer require stokoe/tokenable
发布资源
$ php artisan vendor:publish --provider="Stokoe\TokenableServiceProvider"
配置
API Token长度
打开 config/tokenable.php
return [ 'token_length' => 60, ...
创建时将新令牌设置为默认
打开 config/tokenable.php
return [ ... 'make_primary' => true, ...
用法
将特质导入您的模型并使用它
namespace App; ... use Stokoe\Tokenable; class User extends Authenticatable { use Notifiable, Tokenable; ...
现在这个模型有一个名为 apiKey
的关系。
为给定记录生成新的API令牌。
为给定记录生成API令牌。
$user = App\User::first(); $user->generateApiToken(); // return ex: d96d7fb36e394c22bab8d4089f619752a3fe172effbdaad738d4276d81df72305373e207a7a91f8e18fc32cf1f9b6c6977d540f9a125c0746101d539 // You can also set token length at time of generation by passing an integer to the generate method. $user->generateApiToken(12); // return ex: 4bfc264da5337994341981a2
获取与记录相关的API令牌
通常您可以通过查找用户等方式找到API密钥
$user = User::where('api_token', $token)->first();
在这种情况下并不简单。提供了一个方法,但您也可以编写自己的反向关系。(或者改进我的并提交一个pull request!)
以下是找到与API令牌相关的模型的方法。
$user = App\User::first(); $user->api_tokens; // Returns all API Tokens related to the user. (in this example) $token = $request->input('token'); $relatedModel = $token->getRelatedModel(); // I don't like how this method works... // return ex: d96d7fb36e394c22bab8d4089f619752a3fe172effbdaad738d4276d81df72305373e207a7a91f8e18fc32cf1f9b6c6977d540f9a125c0746101d539
将API令牌设置为该记录的主令牌
$user = User::first(); $user->api_tokens->sort('created_at', 'desc')->first()->setPrimary(true); $user->generateApiToken(null, true); // Create an API token for that user, use the standard length (defined in config) and make it primary.