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.