falco442/cakephp-3-token-auth

此包已被废弃,不再维护。未建议替代包。

CakePHP 的 TokenAuth 插件

安装: 4

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:cakephp-plugin

dev-master 2016-10-17 15:46 UTC

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 对象,例如 userModelfields

使用

在控制器中

您可以为您的控制器设置登录操作;例如,在 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