infoburp / yii2-user
Yii 2 用户认证模块
Requires
This package is not auto-updated.
Last update: 2024-10-01 19:11:55 UTC
README
Yii 2 用户 - 用户认证模块
与 infoburp 的 yii2-otp 集成,感谢 sam002
新版本发布于 2016 年 1 月 31 日
此版本包含一些小更新和错误修复。最值得注意的是,我将 LoginForm.username 更改为 LoginForm.email 并在 app\models\Profile 中添加了一个时区字段(感谢 mnglkhn)
如果有任何问题,请通知我,我会尽快处理。
演示
特性
- 快速设置 - 即插即用,您可以立即看到它的工作方式
- 易于扩展
- 使用电子邮件和/或用户名进行注册
- 使用电子邮件和/或用户名登录
- 通过电子邮件登录/注册(输入电子邮件 > 在收件箱中获取链接 > 点击链接进行登录/注册)
- 电子邮件确认(+重新发送功能)
- 社交认证(Facebook,Twitter,Google,LinkedIn,Reddit,Vkontakte)
- 账户页面
- 更新电子邮件,用户名和密码
- 需要当前密码
- 个人资料页面
- 列出用户的自定义字段,例如,full_name
- 密码恢复
- 通过 GridView 进行管理 CRUD
安装
// app/config/web.php return [ 'components' => [ // NOTE: in the yii2-advanced-app, the user component should be updated in // 'frontend/config/main.php' and/or 'backend/config/main.php' (OR you can add it // to 'common/config' if you remove it from frontend/backend) 'user' => [ 'class' => 'app\modules\user\components\User', ], 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'useFileTransport' => true, 'messageConfig' => [ 'from' => ['admin@website.com' => 'Admin'], // this is needed for sending emails 'charset' => 'UTF-8', ] ], ], 'modules' => [ 'user' => [ 'class' => 'app\modules\user\Module', // set custom module properties here ... ], ], ]; // app/config/db.php return [ 'class' => 'yii\db\Connection', // set up db info ];
- 运行迁移文件
php yii migrate --migrationPath=@vendor/amnah/yii2-user/migrations
- 在浏览器中访问您的应用程序
https:///pathtoapp/web/user
- 使用
neo/neo(请更改它!)以管理员身份登录 - 根据需要设置 模块属性
- 可选 - 更新主布局中的导航链接 app/views/layouts/main.php
// app/views/layouts/main.php <?php 'items' => [ ['label' => 'Home', 'url' => ['/site/index']], ['label' => 'About', 'url' => ['/site/about']], ['label' => 'Contact', 'url' => ['/site/contact']], ['label' => 'User', 'url' => ['/user']], Yii::$app->user->isGuest ? ['label' => 'Login', 'url' => ['/user/login']] : // or ['/user/login-email'] ['label' => 'Logout (' . Yii::$app->user->displayName . ')', 'url' => ['/user/logout'], 'linkOptions' => ['data-method' => 'post']], ],
开发注意事项
我如何检查用户权限?
此包包含一个自定义权限系统。每个用户都有一个角色,该角色具有数据库列形式的权限。它应遵循以下格式:can_{permission name}。
例如,默认情况下,role 表有一个名为 can_admin 的列。要检查用户是否可以执行管理操作
if (!Yii::$app->user->can("admin")) { throw new HttpException(403, 'You are not allowed to perform this action.'); } // --- or ---- $user = User::findOne(1); if ($user->can("admin")) { // do something };
根据需要添加更多数据库列以获取权限。如果您需要更强大的功能,请查看设置 [RBAC] (https://github.com/yiisoft/yii2/blob/master/docs/guide/security-authorization.md#role-based-access-control-rbac)。
注意:如果您为 RBAC 设置了 authManager 组件,则 Yii::$app->user->can() 将使用该组件而不是此模块的自定义 role 表。
我如何向表单添加验证码?
查看 dektrium 提供的出色的 3 步 指南。(请注意,验证规则的场景将取决于您项目的需求。)
我如何添加 i18n?
// app/config/web.php return [ 'components' => [ 'i18n' => [ 'translations' => [ 'user' => [ 'class' => 'yii\i18n\PhpMessageSource', 'basePath' => '@app/messages', // example: @app/messages/fr/user.php ] ], ], ], ];
我如何扩展此包?
您可以直接扩展类。根据您需要哪些类,设置适当的配置属性
// app/config/web.php 'components' => [ 'user' => [ 'class' => 'app\components\MyUser', 'identityClass' => 'app\models\MyUser', ], ], 'modules' => [ 'user' => [ 'class' => 'app\modules\MyModule', 'controllerMap' => [ 'default' => 'app\controllers\MyDefaultController', ], 'modelClasses' => [ 'User' => 'app\models\MyUser', // note: don't forget component user::identityClass above 'Profile' => 'app\models\MyProfile', ], 'emailViewPath' => '@app/mail/user', // example: @app/mail/user/confirmEmail.php ], ],
对于视图文件,您可以使用 theme 组件。
// app/config/web.php 'components' => [ 'view' => [ 'theme' => [ 'pathMap' => [ '@vendor/amnah/yii2-user/views' => '@app/views/user', // example: @app/views/user/default/login.php ], ], ], ],
我需要更多控制。我能否扩展整个系统?
您始终可以选择分支这个包并进行修改。
或者,如果您愿意,您可以通过复制文件直接将包集成到您的应用程序中。这样做会使得更新更加困难,但也保证了在运行 composer update 后您的应用程序不会崩溃。
要这样做,您可以使用辅助命令 CopyController。
- 将模块添加到您的 config/console.php 中以获取对命令的访问权限(注意:这是控制台配置)
// app/config/console.php 'modules' => [ 'user' => [ 'class' => 'app\modules\user\Module', ], ],
- 使用
php yii user/copy命令。对于 [基本应用程序] (https://github.com/yiisoft/yii2-app-basic),您可以在没有选项的情况下调用默认命令
php yii user/copy --from=@vendor/amnah/yii2-user --to=@app/modules/user --namespace=app\\modules\\user
- 更新配置以指向您的新包
// app/config/web.php + app/config/console.php 'modules' => [ 'user' => [ 'class' => 'app\modules\user\Module', ], ],
或者,您可以手动进行此操作。只需将文件复制/粘贴到您想要的位置,并在文件中更改命名空间。将 app\modules\user 替换为 app\modules\user。
待办事项
- 测试
- 问题/请求?提交一个 GitHub 问题