
后端【免费下载链接】yii2-user[ABANDONED] Flexible user registration and authentication module for Yii2项目地址https://gitcode.com/gh_mirrors/yi/yii2-user点击查看免费下载yii2-user 是 Yii2 框架下灵活的用户注册与认证模块。本文带你快速掌握其内置的控制器事件系统——通过 20 个事件钩子拦截注册、登录、用户创建、密码重置等关键流程无需修改任何源码即可注入自定义业务逻辑是 Yii2 新手扩展用户模块的最快路径。为什么用事件而不是继承控制器传统做法是复制控制器源码再改逻辑但一旦升级 yii2-user 版本所有修改都可能丢失。yii2-user 在 5 个控制器的关键节点内置了trigger()事件触发详见 using-controller-events.md你只需监听事件即可注入逻辑完全不动源码。优势说明 解耦业务逻辑写在配置或独立事件类中与控制器彻底分离⬆️ 可升级升级 yii2-user 不影响你的事件监听代码 可复用同一事件可被多处监听互不干扰6 类事件对象事件里能拿到什么数据所有事件对象都继承自yii\base\Event由 EventTrait 统一构造各自携带不同的业务数据事件类可获取数据典型场景FormEvent$event-form表单模型注册、重新发送确认邮件、登录、账号更新UserEvent$event-userUser 模型确认邮箱、登出、管理员创建/封禁/删除用户ProfileEvent$event-profileProfile 模型个人资料更新ConnectEvent$event-account$event-user绑定/解绑社交账号AuthEvent$event-account$event-client社交登录认证ResetPasswordEvent$event-token$event-form密码重置流程记忆技巧事件类名直接反映它携带的数据——看到UserEvent就知道里面有个UserFormEvent里有个form。完整事件清单5 个控制器共 48 个事件以下按控制器分组快速查阅你需要的钩子点RegistrationController8 个事件源码controllers/RegistrationController.php事件常量触发时机事件对象EVENT_BEFORE_REGISTER注册表单创建后FormEventEVENT_AFTER_REGISTER注册成功后FormEventEVENT_BEFORE_CONNECT社交账号绑定前UserEventEVENT_AFTER_CONNECT社交账号绑定后UserEventEVENT_BEFORE_CONFIRM邮箱确认前UserEventEVENT_AFTER_CONFIRM邮箱确认后UserEventEVENT_BEFORE_RESEND重新发送表单创建后FormEventEVENT_AFTER_RESEND重新发送成功后FormEventSecurityController8 个事件源码controllers/SecurityController.php事件常量触发时机事件对象EVENT_BEFORE_LOGIN登录校验前FormEventEVENT_AFTER_LOGIN登录成功后FormEventEVENT_BEFORE_LOGOUT登出前UserEventEVENT_AFTER_LOGOUT登出后UserEventEVENT_BEFORE_AUTHENTICATE社交认证前AuthEventEVENT_AFTER_AUTHENTICATE社交认证后AuthEventEVENT_BEFORE_CONNECT绑定社交账号前AuthEventEVENT_AFTER_CONNECT绑定社交账号后AuthEventRecoveryController6 个事件源码controllers/RecoveryController.php事件常量触发时机事件对象EVENT_BEFORE_REQUEST找回密码表单创建后FormEventEVENT_AFTER_REQUEST找回密码邮件发送后FormEventEVENT_BEFORE_TOKEN_VALIDATEToken 校验前ResetPasswordEventEVENT_AFTER_TOKEN_VALIDATEToken 校验后ResetPasswordEventEVENT_BEFORE_RESET密码重置表单加载前ResetPasswordEventEVENT_AFTER_RESET密码重置成功后ResetPasswordEventSettingsController10 个事件源码controllers/SettingsController.php事件常量触发时机事件对象EVENT_BEFORE_PROFILE_UPDATE资料更新前ProfileEventEVENT_AFTER_PROFILE_UPDATE资料更新后ProfileEventEVENT_BEFORE_ACCOUNT_UPDATE账号更新前FormEventEVENT_AFTER_ACCOUNT_UPDATE账号更新后FormEventEVENT_BEFORE_CONFIRM邮箱变更确认前UserEventEVENT_AFTER_CONFIRM邮箱变更确认后UserEventEVENT_BEFORE_DISCONNECT解绑社交账号前ConnectEventEVENT_AFTER_DISCONNECT解绑社交账号后ConnectEventEVENT_BEFORE_DELETE删除账号前UserEventEVENT_AFTER_DELETE删除账号后UserEventAdminController16 个事件源码controllers/AdminController.php事件常量触发时机事件对象EVENT_BEFORE_CREATE创建用户前UserEventEVENT_AFTER_CREATE创建用户后UserEventEVENT_BEFORE_UPDATE更新用户前UserEventEVENT_AFTER_UPDATE更新用户后UserEventEVENT_BEFORE_IMPERSONATE模拟用户前UserEventEVENT_AFTER_IMPERSONATE模拟用户后UserEventEVENT_BEFORE_PROFILE_UPDATE资料更新前ProfileEventEVENT_AFTER_PROFILE_UPDATE资料更新后ProfileEventEVENT_BEFORE_CONFIRM确认前UserEventEVENT_AFTER_CONFIRM确认后UserEventEVENT_BEFORE_DELETE删除前UserEventEVENT_AFTER_DELETE删除后UserEventEVENT_BEFORE_BLOCK封禁前UserEventEVENT_AFTER_BLOCK封禁后UserEventEVENT_BEFORE_UNBLOCK解封前UserEventEVENT_AFTER_UNBLOCK解封后UserEvent实战一注册成功后自动跳转登录页最经典的事件应用场景。默认行为是显示账号已创建的空白消息页实际项目中通常希望直接跳转到登录页。在模块配置中通过on 事件名语法绑定监听器docs/using-controller-events.md// config/web.php use [ 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([/user/security/login])-send(); \Yii::$app-end(); } ], ], ],$e参数就是FormEvent对象可通过$e-form拿到RegistrationForm模型进而访问$e-form-username、$e-form-email等字段。实战二登录成功后记录日志并分配默认角色使用类级别事件绑定适合放在应用启动文件中如 Bootstrap.php// 登录成功后执行 \yii\base\Event::on( \dektrium\user\controllers\SecurityController::className(), \dektrium\user\controllers\SecurityController::EVENT_AFTER_LOGIN, function () { $user \Yii::$app-user-identity; \Yii::info(用户 {$user-username} 登录成功, security); // 在此分配 RBAC 角色参考 docs/yii2-rbac.md } );事件触发位置见 SecurityController.php#L157-L160在login()成功后触发。实战三管理员创建用户后自动分配 RBAC 角色结合 yii2-rbac 扩展在后台创建用户时自动分配角色\yii\base\Event::on( \dektrium\user\controllers\AdminController::className(), \dektrium\user\controllers\AdminController::EVENT_AFTER_CREATE, function ($e) { $user $e-user; // UserEvent 携带的 User 模型 \dektrium\rbac\Assignments::addAssignment($user-id, user); \Yii::info(新用户 {$user-username} 已分配角色 user); } );⚠️ 注意区分AdminController::EVENT_AFTER_CREATE管理员后台创建和RegistrationController::EVENT_AFTER_REGISTER前台自助注册是两个不同事件分别触发在不同控制器中监听时务必用对控制器类名。实战四密码重置成功后使所有会话失效安全加固场景——密码被重置后强制该用户所有设备下线\yii\base\Event::on( \dektrium\user\controllers\RecoveryController::className(), \dektrium\user\controllers\RecoveryController::EVENT_AFTER_RESET, function ($e) { $token $e-token; // ResetPasswordEvent 携带的 Token $userId $token-user_id; // 删除该用户的所有活跃会话 \yii\web\User::getSessionManager()-clear($userId); } );事件触发位置RecoveryController.php#L178-L181在resetPassword()成功后触发。两种事件绑定方式怎么选维度配置内联绑定类级别Event::on写法controllerMap中on . EVENT_X\yii\base\Event::on(类名, 事件名, 回调)作用域仅对配置的该控制器实例生效全局生效所有控制器实例适用场景简单跳转、Flash 消息日志、RBAC、审计、跨模块联动代码位置配置文件启动文件 / 独立事件类推荐做法简单的页面跳转 → 配置内联绑定写在web.php里需要复用、涉及多个控制器或需要访问其他服务 → 类级别绑定并将监听器封装到独立的事件类中新手最佳实践先查事件常量再写监听打开对应控制器文件搜索const EVENT_找到所有可用事件如 RegistrationController.php#L41-L83before/after 的选择原则需要校验或拦截如阻止某类用户注册→ 用before事件需要善后处理如发通知、写日志、分配角色→ 用after事件事件对象类型别搞混同一个控制器不同 action 可能用不同事件对象如actionRegister用FormEventactionConfirm用UserEvent取数据时要调对应方法升级兼容性事件常量是public const只要不删除就不会 breaking比继承控制器更安全相关文档与源码索引资源路径事件使用文档docs/using-controller-events.md模块完整配置项docs/configuration.md可用操作路由列表docs/available-actions.mdRBAC 角色分配docs/yii2-rbac.md事件 Trait 实现traits/EventTrait.php模块入口类Module.php控制器源码目录controllers/事件类源码目录events/赞分享后端【免费下载链接】yii2-user[ABANDONED] Flexible user registration and authentication module for Yii2项目地址https://gitcode.com/gh_mirrors/yi/yii2-user点击查看免费下载相关推荐YimMenu Lua 事件系统实战event 表与 menu_event 事件注册指南YimMenu Lua 事件系统实战event 表与 menu_event 事件注册指南 YimMenu 为 Lua 脚本提供了 event 表用于向菜单的游戏开发逆向工程Astrid Hooks 源码级实战指南用 23 个生命周期事件为 Agent 操作系统注入自定义拦截器Astrid Hooks 源码级实战指南用 23 个生命周期事件为 Agent 操作系统注入自定义拦截器 Astrid Hooks 是 Astrid 中用户自从登录到权限控制Auth.js事件系统的实战指南从登录到权限控制Auth.js事件系统的实战指南 你是否曾在开发身份验证系统时遇到这些问题用户登录后需要自动分配角色、特定操作需要触发通知、第三方服务需要同认证鉴权后端身份认证前端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考