node-link / cakephp-remember-me

CakePHP 插件,使用 3.5 或更高版本的新 cookie 算法执行 Remember-me 认证

安装数: 34,205

依赖项: 0

建议者: 0

安全: 0

星标: 2

关注者: 3

分支: 0

公开问题: 0

类型:cakephp-plugin

v0.1.2 2018-10-29 14:26 UTC

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/.envconfig/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/.envSECURITY_COOKIE_KEY,或者 config/app.php'Security.cookieKey'

问题报告

如果您有 RememberMe 插件的问题,请发送拉取请求或打开 GitHub 上的问题。

此外,如果您能帮助更新 README.md 文件,我将不胜感激。