narendravaghela/cakephp-remember-me

CakePHP的RememberMe插件

安装数: 13,375

依赖: 0

建议者: 0

安全: 0

星标: 5

关注者: 2

分支: 5

开放问题: 0

类型:cakephp-plugin

v1.2 2016-10-26 06:49 UTC

This package is auto-updated.

Last update: 2024-09-27 03:01:56 UTC


README

Build Status codecov.io

此插件为CakePHP应用程序提供了一种基本功能,用于将用户数据存储在Cookies中,以便登录并记住特定浏览器中的用户。

阅读这篇博客文章以获取详细示例。

要求

此插件有以下要求

  • CakePHP 3.0.0或更高版本。
  • PHP 5.4.16或更高版本。

安装

您可以使用composer将此插件安装到您的CakePHP应用程序中。

composer require narendravaghela/cakephp-remember-me

安装后,加载插件

Plugin::load('RememberMe');

或者,您可以使用shell命令加载插件

$ bin/cake plugin load RememberMe

使用方法

要使用此插件,只需将此插件中的RememberMe组件加载到您的AppController或UsersController中。

$this->loadComponent('RememberMe.RememberMe');

您可以选择传递此组件的配置选项。

$this->loadComponent('RememberMe.RememberMe', [
    'cypherKey' => "17485937564892755682047369192734583655920926", // Random unuqie string to encrypt/decrypt data. If not set, default salt value of the application will be used.
    'cookieName' => "rememberme", // Name of the cookie.
    'period' => '14 Days' // Time period
]);

这里的基本流程应该是这样的

  • 从数据库中查找用户
  • 验证
  • 如果用户选中了"记住我"复选框,则使用此组件存储用户数据。
  • 下次用户(任何用户)访问应用程序时,使用getRememberedData()检查存储的数据。
  • 使用getRememberedData()返回的数据与数据库进行验证,如果一切顺利,则创建用户会话并使其登录。
  • 如果用户手动注销,只需使用removeRememberedData()从Cookie中删除数据即可。

记住数据

在您的login操作或用户登录应用程序的操作中,使用rememberData()函数并传递登录用户的必要数据。

$this->RememberMe->rememberData("data@example.com"); // email address of user being logged in
// or you can use the array as well
$this->RememberMe->rememberData([
  'email' => 'foo@bar.com',
  'someUniqueKey' => 'someuniquevalue'
]);

获取记住的数据

通常,在我们的beforeFilter()回调中,我们检查用户是否已登录。这里,我们可以使用getRememberedData()检索我们在登录操作中之前存储的数据。如果找到,则可以将其与我们的用户表进行比较,以检查是否存在用户。

$isRemembered = $this->RememberMe->getRememberedData();

// code to check this data against database
// set the session
// ...

删除数据

如果您需要删除用户数据,只需调用removeRememberedData()即可,它将从Cookie中删除数据。

就是这样。

报告问题

如果您遇到RememberMe的问题,请请在GitHub上提交问题。