falco442 / cakephp-3-token-auth
此包已被废弃,不再维护。未建议替代包。
CakePHP 的 TokenAuth 插件
dev-master
2016-10-17 15:46 UTC
Requires
- php: >=5.5.9
- cakephp/cakephp: >=3.3.2 <4.0.0
Requires (Dev)
This package is not auto-updated.
Last update: 2022-08-13 16:34:38 UTC
README
这是一个用于使用令牌进行身份验证的插件。
要求
- CakePHP 3.x
安装
获取插件
您可以通过手动下载或使用 composer 安装插件。
composer require falco442/cakephp-3-token-auth
准备表
将 'token'(varchar(255))和 'token_created'(datetime)字段放入您用于身份验证模型的表('users')中。
加载插件
通过调用
Plugin::loadAll();
或
Plugin::load('TokenAuth');
并将 Authentication 对象放入您的 AppController.php
public function initialize(){ parent::initialize(); // ... $this->loadComponent('Auth',[ 'authenticate'=>[ 'TokenAuth.Token' ], 'unauthorizedRedirect'=>false, 'storage'=>'Memory' ]); // ... }
请注意,您可以使用与 FormAuthenticate 相同的参数自定义 Authentication 对象,例如 userModel
和 fields
使用
在控制器中
您可以为您的控制器设置登录操作;例如,在 UsersController.php
中的 login()
操作
public function login(){ $user = $this->Auth->identify($this->request,$this->response); $this->set(compact('user')); $this->set('_serialize',['user']); }
由于令牌身份验证主要用于 API 应用程序,您只需要检索包含 TokenAuth 自动生成的令牌的新 $user
对象。此令牌将用于执行所有调用您不希望公开访问的操作。
如果您想使操作公开,只需在相应控制器的 initialize()
方法中使用
$this->Auth->allow(['action-name']);
即可。
客户端将要调用的非公开路由应采用以下形式
GET /uri.json?token=token-received
重置令牌
您可以通过调用 shell 来重置令牌
cd cake-root ./bin/cake TokenAuth.token refresh
注意:
- 重置令牌任务将基于 '-15 天' 作为基本令牌生命周期,但您可以自定义 shell
- shell 以模型
User
为基础,但您可以设置任何您喜欢的模型
在控制台输入
cd cake-root ./bin/cake TokenAuth.token refresh --help
以获取帮助
有用信息
由于我们主要用于 API Web 应用程序进行令牌身份验证,因此设置 CakePHP 中的 REST(参见此页面)很有用。
这可以通过以下简单步骤完成
- 通过添加
Router::parseExtensions('json','xml');
(或您想要的任何扩展)来修改cake-root/app/Config/routes.php
- 在
cake-root/app/Controller/AppController.php
中添加RequestHandler
组件;它将解析格式扩展(json、xml 等) - 如果您想使用 REST,则可以使用
Router::mapResources()
方法将资源(如此页面所述)映射到方法,并将其放入cake-root/app/Config/routes.php