ndsoftware/yii2-account

此软件包已被废弃,不再维护。未建议替代软件包。

Yii 框架的账户模块。

2.0.0 2016-04-18 10:57 UTC

This package is not auto-updated.

Last update: 2022-04-11 14:50:36 UTC


README

Build Status Code Climate Latest Stable Version Total Downloads Latest Unstable Version License

为 Yii 框架提供一个常用账户功能的模块。

为什么需要这个

该项目受到http://github.com/mishamx/yii-userhttps://github.com/dektrium/yii2-user 模块的双重启发,并按照框架的最佳实践,结合我们对 Yii 的专业知识精心开发。该模块使用 Yii 的自有密码方法 yii\base\Security,您也可以实现我们的 PasswordHasherInterface 以不同的方式散列密码。其他功能包括发送邮件和创建身份验证令牌的接口;各种密码安全特性等等。更多详情请参阅下方的功能部分。

功能

  • 安全账户(bcrypt 加密) 完成
  • 可选的注册流程(默认启用) 完成
  • 注册时支持验证码 完成
  • 可选的账户激活(默认启用) 完成
  • 登录 / 登出 完成
  • 通过第三方服务进行注册和登录 完成
  • 重置密码 完成
  • 发送邮件(带有令牌验证) 完成
  • 每 x 天需要更改密码(默认禁用) 完成
  • 密码历史(加密)以防止重复使用相同的密码 完成
  • 在 x 次失败的登录尝试后锁定账户(默认禁用) 完成
  • 用于创建账户的控制台命令 完成

安装

安装此扩展的首选方式是通过 composer

运行以下命令:

php composer.phar require --prefer-dist nordsoftware/yii2-account "*"

"nordsoftware/yii2-account": "*"

将其添加到您的 composer.json 文件的“require”部分。

在您可以使用该模块之前,您需要应用其数据库迁移。为此,请运行以下命令

yii migrate --migrationPath="vendor/nordsoftware/yii2-account/src/migrations"

用法

安装扩展后,只需按以下方式修改您的应用程序配置

return [
    'bootstrap' => [
        'nord\yii\account\Bootstrap'
        // ...
    ],
    'modules' => [
        'account' => 'nord\yii\account\Module',
        // ...
    ],
    // ...
];

配置

以下配置可用于 nord\yii\account\Module

  • classMap 数组 在模块内部使用类映射。
  • enableActivation 布尔值 是否启用账户激活(默认为 true)。
  • enableSignup 布尔值 是否启用注册流程(默认为 true)。
  • enableCaptcha 布尔值 是否在注册时启用验证码(默认为 false)。
  • enableClientAuth 布尔值 是否启用客户端身份验证(默认为 false)。
  • userConfig 数组 传递给 yii\web\User 的配置。
  • passwordConfig 数组 传递给 PasswordStrengthValidator 的配置。
  • captchaConfig 数组 传递给 CaptchaAction 的配置。
  • clientAuthConfig 数组 传递给 yii\authclient\Collection 的配置。
  • urlConfig 数组 模块使用的 URL 的配置。
  • usernameAttribute 字符串 用户名属性的名称(默认为 username)。
  • emailAttribute 字符串 电子邮件属性的名称(默认为 email)。
  • passwordAttribute 字符串 密码属性的名称(默认为 password)。
  • messageSource 字符串 用于模块的消息源组件。
  • messagePath 字符串 用于模块的消息路径。

参数

以下参数适用于 nord\yii\account\Module

  • fromEmailAddress 字符串 发送电子邮件时使用的发件人电子邮件地址。
  • numAllowedFailedLoginAttempts 整数 在账户被锁定之前允许的失败登录尝试次数(默认为 10)。
  • minUsernameLength 整数 用户名的最小长度(默认为 4)。
  • minPasswordLength 整数 密码的最小长度(默认为 6)。
  • loginExpireTime 整数 登录cookie过期的时间(默认为 30天)。
  • activateExpireTime 整数 账户激活过期的时间(默认为 30天)。
  • resetPasswordExpireTime 整数 密码重置过期的时间(默认为 1天)。
  • passwordExpireTime 整数 密码过期的时间(默认为禁用)。
  • lockoutExpireTime 整数 账户锁定过期的时间(默认为 10分钟)。
  • tokenExpireTime 整数 授权令牌过期的时间(默认为 1小时)。

使用方法

现在您应该能够在访问以下 URL 时看到登录页面

index.php?r=account OR index.php/account

您可以使用以下命令从命令行生成一个账户

yii account/create demo demo1234

扩展

该项目注重可重用性,因此在开始复制粘贴之前,请花点时间阅读本节,了解如何正确扩展此模块。

自定义账户模型

只要您将其添加到模型中,就可以使用自己的账户模型

  • username varchar(255) not null 账户用户名
  • password varchar(255) not null 账户密码
  • authKey varchar(255) not null 用于cookie认证的认证密钥
  • email varchar(255) not null 账户电子邮件
  • lastLoginAt datetime null default null 用户最后一次登录的时间
  • createdAt datetime null default null 账户创建的时间
  • status int(11) default '0' 账户状态(例如:未激活、已激活)

更改扩展使用的模型很容易,只需将其配置为使用您的类,并将其添加到模块的类映射中即可

'account' => [
    'class' => 'nord\yii\account\Module',
    'classMap' => [
        'account' => 'MyAccount',
    ],
],

自定义模型

您可以使用类映射来配置模块使用的任何类,以下是所有可用类的完整列表

  • account models\Account 账户模型
  • token models\AccountToken 账户令牌模型
  • provider models\AccountProvider 账户提供者模型
  • loginHistory models\AccountLoginHistory 登录历史记录模型
  • passwordHistory models\AccountPasswordHistory 密码历史记录模型
  • loginForm models\LoginForm 登录表单
  • passwordForm models\PasswordForm 处理密码的基本表单
  • signupForm models\SignupForm 注册表单
  • connectForm models\ConnectForm 连接表单
  • 忘记密码 models\ForgotPasswordForm 忘记密码表单
  • passwordBehavior behaviors\PasswordAttributeBehavior 密码属性行为
  • passwordValidator validators\PasswordStrengthValidator 密码强度验证器
  • webUser yii\web\User 网络用户组件
  • captcha yii\captcha\Captcha 验证码小部件
  • captchaAction yii\captcha\CaptchaAction 验证码动作

自定义控制器

如果您想使用自己的控制器,可以使用模块的控制器映射来映射它们。

'account' => [
    'class' => 'nord\yii\account\Module',
    'controllerMap' => [
        'authenticate' => 'MyAuthenticateController',
    ],
],

自定义组件

如果您想更改模块使用的组件,这里有一个可用的接口的完整列表。

  • dataContract components\datacontract\DataContractInterface 模块与其数据模型之间的抽象层(默认为 DataContract
  • mailSender components\mailsender\MailSenderInterface 用于发送电子邮件的组件(默认为 YiiMailSender
  • passwordHasher components\passwordhasher\PasswordHasherInterface 用于散列密码的组件(默认为 YiiPasswordHasher
  • tokenGenerator components\tokengenerator\TokenGeneratorInterface 用于生成随机令牌的组件(默认为 YiiTokenGenerator

在创建自己的实现之前,您可以查看捆绑的实现,因为我们已经支持例如通过Mandrill发送邮件。

贡献

如果您想为此项目做出贡献,请随意向 develop 分支创建拉取请求。

运行测试

即将推出 …

翻译

如果您想翻译此项目,您可以在 messages/templates 下找到翻译模板。完成翻译后,您应该向 develop 分支创建拉取请求。