yii2-user
2016-04-01 10:18
387 查看
https://github.com/dektrium/yii2-user
安装 : composer require "dektrium/yii2-user:0.9.*@dev"
配置 : 'modules' => [ 'user' => [ 'class' => 'dektrium\user\Module', ], ], 添加到config/web.php
注意 : 确保配置文件中没有别的 user 组件 如果 components 中有 user 的配置 注释掉
如果你需要自定义组件 可以:
生成数据库 : yii migrate/up --migrationPath=@vendor/dektrium/yii2-user/migrations
migration,
profile,
social_account,
token, user
配置信息:
enableFlashMessages 【默认为true】若为false 要自定义 提示信息 组件
enableRegistration 【true】是否开启注册功能
enableGeneratingPassword 【false】 不准用户自己输入密码 自动生成后通过邮件发送
enableConfirmation【true】 是否 要邮件验证
enableUnconfirmedLogin【false】邮件未验证 能不能登录
enablePasswordRecovery 【true】 用户能不能找回密码
emailChangeStrategy【STRATEGY_DEFAULT 】修改邮箱时 用那种策略:
\
\
\
confirmWithin【86400(24小时)】令牌过期时间(秒)过期必须刷新页面
rememberFor【1209600(两周)】 记住用户的过期时间时间(秒)
recoverWithin【21600(6小时)】 在令牌过期前的规定时间内(秒) 要重新请求
admins 【[]】 能操作 用户管理页面 的用户们的用户名列表
adminPermission【null】 为用户指定RBAC权限的页面 最高权限 和 有此权限的用户可以操作
cost 【10】 生成hash值参数的位数 位数越高越能防御暴力攻击
urlPrefix 【user】 此模块的url前缀 如果设置为 auth ,
urlRules 【[]】 URL 管理规则 ???
可用的动作:
/user/registration/register 注册表单
/user/registration/resend 发送表单
/user/registration/confirm 确认 (需要id and token 参数)
/user/security/login 登录表单
/user/security/logout 退出登录 (仅支持post)
/user/recovery/request ???
/user/recovery/reset 重置密码 (需要id and token 参数)
/user/settings/profile 个人资料设置??
/user/settings/account 账号设置 (email, username, password)
/user/settings/networks 第三方账号登录
/user/profile/show 显示用户头像?? (需要id 参数)
/user/admin/index 用户管理界面
/user/admin/create 创建用户
/user/admin/update 修改用户
/user/admin/delete 删除用户
你可以重写 类 和 添加 行为和事件处理程序:
重写默认view:
重写控制器 和 使用事件:
改变后台管理用户页面的 布局(layout):
使用第三方登录:
facebook 获取的用户信息 补充到用户信息实例
其他的功能 如:
自定义邮件发送类型 添加验证码 用户扩展字段 注册时填写更多信息等 下次分解
安装 : composer require "dektrium/yii2-user:0.9.*@dev"
配置 : 'modules' => [ 'user' => [ 'class' => 'dektrium\user\Module', ], ], 添加到config/web.php
注意 : 确保配置文件中没有别的 user 组件 如果 components 中有 user 的配置 注释掉
如果你需要自定义组件 可以:
'modules' => [ 'user' => [ 'class' => 'app\compoents\User', 'identityClass' => 'dektrium\user\Models\User', ], ],
生成数据库 : yii migrate/up --migrationPath=@vendor/dektrium/yii2-user/migrations
migration,
profile,
social_account,
token, user
配置信息:
enableFlashMessages 【默认为true】若为false 要自定义 提示信息 组件
enableRegistration 【true】是否开启注册功能
enableGeneratingPassword 【false】 不准用户自己输入密码 自动生成后通过邮件发送
enableConfirmation【true】 是否 要邮件验证
enableUnconfirmedLogin【false】邮件未验证 能不能登录
enablePasswordRecovery 【true】 用户能不能找回密码
emailChangeStrategy【STRATEGY_DEFAULT 】修改邮箱时 用那种策略:
\
dektrium\user\Module::STRATEGY_DEFAULT发送给新的邮箱 并点击确认链接
\
dektrium\user\Module::STRATEGY_INSECURE 修改邮箱 不另行通知
\
dektrium\user\Module::STRATEGY_SECURE 发送给新的 和旧的邮箱 都要点击确认链接
confirmWithin【86400(24小时)】令牌过期时间(秒)过期必须刷新页面
rememberFor【1209600(两周)】 记住用户的过期时间时间(秒)
recoverWithin【21600(6小时)】 在令牌过期前的规定时间内(秒) 要重新请求
admins 【[]】 能操作 用户管理页面 的用户们的用户名列表
adminPermission【null】 为用户指定RBAC权限的页面 最高权限 和 有此权限的用户可以操作
cost 【10】 生成hash值参数的位数 位数越高越能防御暴力攻击
urlPrefix 【user】 此模块的url前缀 如果设置为 auth ,
auth/login,
auth/admin,
auth/register
urlRules 【[]】 URL 管理规则 ???
可用的动作:
/user/registration/register 注册表单
/user/registration/resend 发送表单
/user/registration/confirm 确认 (需要id and token 参数)
/user/security/login 登录表单
/user/security/logout 退出登录 (仅支持post)
/user/recovery/request ???
/user/recovery/reset 重置密码 (需要id and token 参数)
/user/settings/profile 个人资料设置??
/user/settings/account 账号设置 (email, username, password)
/user/settings/networks 第三方账号登录
/user/profile/show 显示用户头像?? (需要id 参数)
/user/admin/index 用户管理界面
/user/admin/create 创建用户
/user/admin/update 修改用户
/user/admin/delete 删除用户
你可以重写 类 和 添加 行为和事件处理程序:
[ ... 'user' => [ 'class' => 'dektrium\user\Module', 'modelMap' => [ 'User' => [ 'class' => 'app\models\User', 'on user_create_init' => function () { // do you magic }, 'as foo' => [ 'class' => 'Foo', ], ], ], ], ... ]
重写默认view:
... 'components' => [ 'view' => [ 'theme' => [ 'pathMap' => [ '@dektrium/user/views' => '@app/views/user' ], ], ], ], ...
重写控制器 和 使用事件:
namespace app\controllers\user; use dektrium\user\controllers\AdminController as BaseAdminController; class AdminController extends BaseAdminController { public function actionCreate() { // do your magic } } ------------------------------------------------------------------ ... 'modules' => [ ... 'user' => [ 'class' => 'dektrium\user\Module', 'controllerMap' => [ 'admin' => 'app\controllers\user\AdminController' ], ... ], ... ], //重写控制器/方法
'user' => [ 'class' => \dektrium\user\Module::className(), 'controllerMap' => [ 'registration' => [ 'class' => \dektrium\user\controllers\RegistrationController::className(), 'on ' . \dektrium\user\controllers\RegistrationController::EVENT_AFTER_REGISTER => function ($e) { Yii::$app->response->redirect(array('/user/security/login'))->send(); Yii::$app->end(); } ], ], ], // 注册之后 跳转到 登录页面 而不是仅仅提示信息
改变后台管理用户页面的 布局(layout):
'modules' => [ ... 'user' => [ 'class' => 'dektrium\user\Module', 'controllerMap' => [ 'admin' => [ 'class' => 'app\controllers\user\AdminController', 'layout' => 'path-to-your-admin-layout', ], ], ... ], ... ],
使用第三方登录:
'components' => [ 'authClientCollection' => [ 'class' => yii\authclient\Collection::className(), 'clients' => [ 'facebook' => [ 'class' => 'dektrium\user\clients\Facebook', 'clientId' => 'CLIENT_ID', 'clientSecret' => 'CLIENT_SECRET', ], 'twitter' => [ 'class' => 'dektrium\user\clients\Twitter', 'consumerKey' => 'CONSUMER_KEY', 'consumerSecret' => 'CONSUMER_SECRET', ], 'google' => [ 'class' => 'dektrium\user\clients\Google', 'clientId' => 'CLIENT_ID', 'clientSecret' => 'CLIENT_SECRET', ], ], ], ],
facebook 获取的用户信息 补充到用户信息实例
use dektrium\user\controllers\SecurityController; Event::on(SecurityController::class, SecurityController::EVENT_AFTER_AUTHENTICATE, function (AuthEvent $e) { //如果用户不存在 if ($e->account->user === null) { return; } // 不同的第三方平台提供的信息不 一样 switch ($e->client->getName()) { case 'facebook': $e->account->user->profile->updateAttributes([ 'name' => $e->client->getUserAttributes()['name'], ]); case 'vkontakte': // some different logic } // 保存所有第三方用户属性到 model 下 // Yii::$app->identity->user->accounts['facebook']->decodedData });
其他的功能 如:
自定义邮件发送类型 添加验证码 用户扩展字段 注册时填写更多信息等 下次分解
相关文章推荐
- Doctrine学习笔记(实体ManyToMany) —— 4
- 最简单的FTP客户端、服务器端
- php 配置文件
- php 配置文件
- php 配置文件
- php多线程抓取网页
- 综合归纳:PHP中empty()、is_null()和isset()的区别
- phpexcel的使用
- PHP SOAP 客户端POST XML详细代码
- PHP数组编码转换
- 每天laravel-20160624|RateLimiter
- 每天laravel-20160624|RateLimiter
- PHP基础整理4
- PHP基础整理3
- 每天laravel-20160623|NullStore
- 每天laravel-20160623|NullStore
- 每天laravel-20160622|MeacachedStore
- 每天laravel-20160622|MeacachedStore
- 关于ftp访问windows系统问题
- laravel眼瞎么?