dan33b / cakephp-remember-me
CakePHP 的 RememberMe 插件
v1.2
2016-10-26 06:49 UTC
Requires
- php: >=5.5.9
- cakephp/cakephp: >=3.1.0 <4.0
Requires (Dev)
- cakephp/cakephp-codesniffer: dev-master
- phpunit/phpunit: 4.1.*
This package is auto-updated.
Last update: 2024-09-24 21:42:37 UTC
README
此插件为 CakePHP 应用程序提供基本功能,将用户数据存储在 Cookie 中,以便登录和记住特定浏览器的用户。
阅读此博客文章以获取详细示例。
要求
此插件有以下要求
- 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 上打开一个问题。