nojimage/cakephp-remember-me

CakePHP的RememberMe身份验证适配器插件

安装次数: 11 007

依赖关系: 0

建议者: 0

安全性: 0

星标: 8

关注者: 7

分支: 2

开放性问题: 4

类型:cakephp-plugin

v5.0.0 2024-02-09 08:31 UTC

README

Software License Build Status Codecov Latest Stable Version

此插件提供了一个通过cookie实现永久登录的认证处理器。此插件使用发行令牌的方法,而不是将加密的用户名/密码设置为cookie。

此库受Barry Jaspan的文章《改进的持久登录cookie最佳实践》和Gabriel Birke的库《https://github.com/gbirke/rememberme》的启发。

安装

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

安装composer包的推荐方法是

php composer.phar require nojimage/cakephp-remember-me:^5.0

在您的项目src/Application.php中添加以下语句来加载插件:

$this->addPlugin('RememberMe');

或者运行控制台命令

bin/cake plugin load RememberMe

运行迁移

bin/cake migrations migrate -p RememberMe

与认证插件一起使用

如果您正在使用cakephp/authentication,请使用RememberMeTokenIdentifierCookeAuthenticator

示例:将RememberMe的Identifier和Authenticator加载到Application中的getAuthenticationService钩子中

// in your src/Application.php
class Application extends ...
{
    public function getAuthenticationService(...): void
    {
        $service = new AuthenticationService();
        $fields = [
            'username' => 'email',
            'password' => 'password'
        ];
        // ... setup other identifier and authenticator

        // setup RememberMe
        $service->loadIdentifier('RememberMe.RememberMeToken', compact('fields'));
        $service->loadAuthenticator('RememberMe.Cookie', [
            'fields' => $fields,
            'loginUrl' => '/users/login',
        ]);
    }
}

有关getAuthenticationService的更多信息,请参阅:快速入门 - CakePHP Authentication 3.x

RememberMe.RememberMeTokenIdentifier选项

字段

用于查找的字段。

默认值: ['username' => 'username']

    $service->loadIdentifier('RememberMe.RememberMeToken', [
        'fields' => [
            'username' => 'email',
        ],
    ]);

解析器

身份解析器。如果更改解析器,必须扩展Authentication\Identifier\Resolver\OrmResolver

默认值: 'Authentication.Orm'

    $service->loadIdentifier('RememberMe.RememberMeToken', [
        'resolver' => [
            'className' => 'Authentication.Orm',
            'userModel' => 'Administrators',
        ],
    ]);

tokenStorageModel

用于查找登录cookie令牌的模型。

默认值: 'RememberMe.RememberMeTokens'

    $service->loadIdentifier('RememberMe.RememberMeToken', [
        'tokenStorageModel' => 'YourTokensModel',
    ]);

userTokenFieldName

将令牌数据添加到身份时的属性名称。

默认值: 'remember_me_token'

    $service->loadIdentifier('RememberMe.RememberMeToken', [
        'userTokenFieldName' => 'cookie_token',
    ]);

RememberMe.CookeAuthenticator选项

loginUrl

登录URL,字符串或URL数组。默认为null,所有页面都将进行检查。

默认值: null

    $service->loadAuthenticator('RememberMe.Cookie', [
        'loginUrl' => '/users/login',
    ]);

urlChecker

URL检查器类或对象。

默认值: 'DefaultUrlChecker'

    $service->loadAuthenticator('RememberMe.Cookie', [
        'loginUrl' => '/users/login',
    ]);

rememberMeField

当通过表单认证输入此键时,它将发行一个登录cookie。

默认值: 'remember_me'

    $service->loadAuthenticator('RememberMe.Cookie', [
        'rememberMeField' => 'remember_me',
    ]);

字段

username映射到指定的POST数据字段的数组。

默认值: ['username' => 'username']

    $service->loadAuthenticator('RememberMe.Cookie', [
        'fields' => [
            'username' => 'email',
        ],
    ]);

cookie

登录cookie的写入选项。

  • name: Cookie名称(默认: 'rememberMe'
  • expire: Cookie过期时间(默认: '+30 days'
  • path: 路径(默认: '/'
  • domain: 域名,(默认: '')
  • secure: 安全标志(默认: true
  • httpOnly: Http only标志(默认: true
    $service->loadAuthenticator('RememberMe.Cookie', [
        'cookie' => [
            'name' => 'rememberMe',
            'expires' => '+30 days',
            'secure' => true,
            'httpOnly' => true,
        ],
    ]);

tokenStorageModel

用于存储登录cookie令牌的模型。

默认值: 'RememberMe.RememberMeTokens'

    $service->loadAuthenticator('RememberMe.Cookie', [
        'tokenStorageModel' => 'YourTokensModel',
    ]);

always

当此选项设置为true时,在认证标识后始终发行登录cookie。

默认值: false

    $service->loadAuthenticator('RememberMe.Cookie', [
        'always' => true,
    ]);

dropExpiredToken

当此选项设置为true时,在认证标识后删除过期的令牌。

默认值: true

    $service->loadAuthenticator('RememberMe.Cookie', [
        'dropExpiredToken' => false,
    ]);