node-link / cakephp-remember-me
CakePHP 插件,使用 3.5 或更高版本的新 cookie 算法执行 Remember-me 认证
v0.1.2
2018-10-29 14:26 UTC
Requires
- cakephp/cakephp: ^3.5
Requires (Dev)
- phpunit/phpunit: ^5.7.14|^6.0
This package is auto-updated.
Last update: 2024-08-29 04:31:41 UTC
README
CakePHP 插件,使用 3.5 或更高版本的新 cookie 算法执行 Remember-me 认证。
需求
- CakePHP 3.5 或更高版本
- PHP 5.6 或更高版本
安装
1. 安装插件
您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。
安装 composer 包的推荐方式是
composer require node-link/cakephp-remember-me
2. 加载插件
请按照以下方式手动加载插件
<?php // In src/Application.php. Requires at least 3.6.0 use Cake\Http\BaseApplication; class Application extends BaseApplication { public function bootstrap() { parent::bootstrap(); // Load the plugin $this->addPlugin('NodeLink/RememberMe'); } }
在 3.6.0 之前,您应使用 Plugin::load()
<?php // In config/bootstrap.php use Cake\Core\Plugin; Plugin::load('NodeLink/RememberMe', ['bootstrap' => true]);
或者,使用 bin/cake
按以下方式加载插件
bin/cake plugin load -b NodeLink/RememberMe
3. 设置 AuthComponent
在您的应用程序的 AppController.php
中设置 AuthComponent
。
<?php namespace App\Controller; use Cake\Controller\Controller; class AppController extends Controller { public function initialize() { parent::initialize(); $this->loadComponent('Auth', [ 'authenticate' => [ 'Form' => [ 'userModel' => 'Users', 'fields' => ['username' => 'username', 'password' => 'password'], ], 'NodeLink/RememberMe.Cookie' => [ 'userModel' => 'Users', // Please set the same as 'Form'. 'fields' => ['token' => 'remember_token'], // Specify the column where you want to save the token for Remember-me authentication. ], ], ]); // ... } }
4. 更新数据库和模型
请根据需要更新数据库和模型。
ALTER TABLE `users` ADD `remember_token` VARCHAR(64) NULL DEFAULT NULL;
<?php namespace App\Model\Entity; use Cake\ORM\Entity; class User extends Entity { protected $_hidden = [ 'password', 'remember_token', // Add ]; }
5. 编辑登录模板
将以下内容添加到您的登录模板中
<?= $this->Form->control('remember_me', ['type' => 'checkbox', 'label' => __('Remember me')]); ?> Or <?= $this->Form->checkbox('remember_me'); ?> <?= $this->Form->label('remember_me', __('Remember me')); ?>
配置
编辑 config/.env
或 config/app.php
。
完整的默认配置如下
<?php return [ 'Security' => [ 'cookieKey' => env('SECURITY_COOKIE_KEY', env('SECURITY_SALT', '__SALT__')), ], 'RememberMe' => [ 'field' => 'remember_me', 'cookie' => [ 'name' => 'remember_me', 'expires' => '+1 year', 'path' => '', 'domain' => '', 'secure' => false, 'httpOnly' => true, ], ], ];
建议将随机字符串设置到 config/.env
的 SECURITY_COOKIE_KEY
,或者 config/app.php
的 'Security.cookieKey'
。
问题报告
如果您有 RememberMe 插件的问题,请发送拉取请求或打开 GitHub 上的问题。
此外,如果您能帮助更新 README.md
文件,我将不胜感激。