antarctica / laravel-token-blacklist
允许在Laravel中标记API令牌为无效,直到自然到期。
Requires
- php: >=5.4.0
- antarctica/laravel-base-exceptions: ~0.2
- antarctica/laravel-base-repositories: ~0.1
- antarctica/laravel-token-auth: ~0.1
- illuminate/support: 4.2.*
- indatus/dispatcher: 1.4.*
Requires (Dev)
- illuminate/database: ~4.0
This package is not auto-updated.
Last update: 2024-09-28 16:38:57 UTC
README
允许在Laravel中标记API令牌为无效,直到自然到期。
此包设计为不依赖于任何特定的认证令牌包(除了令牌是字符串外)。然而,默认情况下,此包将依赖于antarctica/laravel-auth-token包以提供开箱即用的实现。
此包设计为不依赖于任何特定的存储机制来记录黑名单令牌的详细信息。然而,默认情况下,此包将依赖于一个Eloquent模型和一个底层的blacklisted_token数据库。这同样是为了提供开箱即用的实现。
您可以提供自己的令牌处理实现和黑名单令牌详细信息的存储实现。
安装
在您的composer.json文件中要求此包
{
"require": {
"antarctica/laravel-token-blacklist": "0.*"
}
}
运行composer update。
在您的app/config/app.php文件的providers数组中注册服务提供者
'providers' => array( 'Antarctica\LaravelTokenBlacklist\LaravelTokenBlacklistServiceProvider', )
包依赖注释
此包依赖于Indatus/dispatcher包 - 该包依赖于操作系统级别的支持(启用cron作业)。
根据BASWEB-114,如果使用antarctica/laravel Ansible角色来提供使用此包的应用程序所需的底层基础设施,则必须在应用程序的composer.json文件中要求此包。
例如:
{
"require": {
"indatus/dispatcher": "1.4.*@dev"
}
}
Composer将按完全相同的方式解析包要求,此更改仅需要让Ansible知道已使用此包,并且应为其使用提供操作系统支持。
用法
基本用法
以下步骤假设使用默认的令牌实现(由antarctica/laravel-token-auth包提供)和存储实现(使用捆绑的Eloquent模型)。要使用其他替代方案,请参阅自定义用法部分。
使用包迁移创建所需的数据库表
php artisan migrate --package="antarctica/laravel-token-blacklist"
完成。
持续维护
该包将创建一个默认情况下每天午夜运行的计划任务。此任务将自动清除任何自然到期且将被拒绝的黑名单令牌。
要手动运行此维护命令
php artisan auth-tokens:delete-expired-blacklisted-tokens
自定义实现
您可以根据需要替换默认的令牌和/或存储实现。
自定义令牌实现
注意:目前不支持,但将在未来版本的包中提供[有关详细信息,请参阅BASWEB-118]。
自定义存储实现
自定义存储实现必须实现TokenBlacklistRepositoryInterface接口,该接口已注释,并希望是自我描述的。《TokenBlacklistRepositoryEloquent》实现可以作为工作示例。
使用自定义实现首先发布此包的配置
php artisan config:publish antarctica/laravel-token-blacklist
然后将repository键设置为自定义实现。
例如:
'repository' => 'Antarctica\LaravelTokenBlacklist\Repository\TokenBlacklistRepositoryEloquent'
贡献
此项目欢迎贡献,请参阅CONTRIBUTING了解我们的通用政策。
开发
为了帮助开发和保持本地计算机的整洁,使用一个由Vagrant管理的VM(虚拟机)创建一个具有所有必要工具/库的隔离环境。
需求
- Mac OS X
- Ansible
brew install ansible - VMware Fusion
- Vagrant
brew cask install vmware-fusion vagrant - 主机管理器和Vagrant VMware插件
vagrant plugin install vagrant-hostmanager && vagrant plugin install vagrant-vmware-fusion - 您在
~/.ssh/中有一个私钥id_rsa和公钥id_rsa.pub - 您在
~/.ssh/config中有一个类似[1]的条目
[1] SSH配置条目
Host bslweb-* ForwardAgent yes User app IdentityFile ~/.ssh/id_rsa Port 22
配置开发虚拟机
使用Vagrant管理虚拟机,并使用Ansible进行配置。
$ git clone ssh://git@stash.ceh.ac.uk:7999/basweb/laravel-token-blacklist.git $ cp ~/.ssh/id_rsa.pub laravel-token-blacklist/provisioning/public_keys/ $ cd laravel-token-blacklist $ ./armadillo_standin.sh $ vagrant up $ ssh bslweb-laravel-token-blacklist-dev-node1 $ cd /app $ composer install $ logout
提交更改
使用Git flow工作流程来管理此包的开发。
应该在feature分支中进行离散的更改,这些分支是从develop创建的,并合并回develop(可以直接在develop中进行小的一行更改)。
准备好发布一组功能/更改时,从develop创建一个release分支,根据需要更新文档,并使用标记的、语义版本(例如v1.2.3)合并到master。
发布后,应将master分支与develop合并,以重新启动流程。高影响力的错误可以在hotfix分支中解决,这些分支直接从master创建并合并(然后合并到develop)。
问题跟踪
与此包相关的问题、错误、改进、问题、建议和其他任务通过BAS Web & Applications Team Jira项目(BASWEB)进行管理。
清理
要删除开发虚拟机
vagrant halt vagrant destroy
然后可以像正常一样安全地删除laravel-token-blacklist目录。
许可证
版权所有 2015 NERC BAS。在MIT许可下发布,有关详细信息请参阅LICENSE。