
Addict后置操作钩子完全参考登录、注册、登出后如何触发自定义逻辑【免费下载链接】addictUser management lib for Phoenix Framework项目地址: https://gitcode.com/gh_mirrors/add/addictAddict是面向 ElixirPhoenix Framework的现成用户管理库负责注册、登录、登出与密码找回/重置这几大流程。本文聚焦它的后置操作钩子post hooks如何在这几类操作成功或失败之后触发你自己的自定义逻辑如打日志、发欢迎邮件、积分结算只需 3 步即可接入。什么是 Addict 后置操作钩子用户在 Addict 中完成一次操作比如登录后控制器并不会立刻返回响应而是先调用你注册的“回调函数”再返回结果。这个回调机制就是后置操作钩子。调用点位于 lib/addict/controller.ex 的统一出口return_success/return_error中每个动作的 POST 请求处理完后Addict 都会把 3 个信息传给你的钩子函数conn—— 当前请求对象可操作 session、响应头等status—— 操作结果:ok成功或:error失败params—— 成功时是用户模型失败时是错误列表 关键约定钩子函数必须把conn原样返回Addict 依赖它继续完成后续的 JSON 响应流程。Addict 提供的 5 个钩子配置一览钩子统一配置在:addict配置段下运行mix addict.generate.configs会生成基础配置见 lib/addict/mix/generate_configs.ex配置项触发时机典型场景post_register用户注册后发欢迎邮件、初始化用户数据post_login用户登录后记录登录日志、积分结算post_logout用户登出后清理缓存、作废旧令牌post_recover_password发送重置密码邮件后审计留痕、通知post_reset_password密码重置完成后清除旧令牌、通知用户五个钩子签名完全一致记一个即可全部套用。官方配置说明在 configs.md完整配置项清单见 lib/addict/configs.ex。3 步接入指南如何配置 post_login以“登录成功后打一条日志”为例完整走一遍接入流程其余四个钩子照搬即可。第一步定义你的钩子函数函数签名固定为 3 个参数conn, status, params并返回conndefmodule MyApp.PostLoginAction do def log(conn, status, model) do IO.inspect(status) IO.inspect(model) conn # 别忘了返回 end end第二步在 config.exs 中注册钩子在:addict配置块里加上钩子生成器会把 Addict 配置追加到config/config.exsconfig :addict, (...), post_login: MyApp.PostLoginAction.log/3常见写法有两种函数引用post_login: MyApp.PostLoginAction.log/3模块 函数元组post_logout: {MyApp, :post_logout_hook}—— 参考 example_app/config/config.exs 中的示例配置那里把 5 个钩子全部接上了不配置或配置为nil时Addict 会直接跳过钩子因此该能力完全可选不影响默认行为。第三步验证生效把 Addict 加入依赖、跑通路由后完成一次登录看控制台是否出现你的日志。想从请求到响应完整跑一遍可以克隆仓库并使用其中的示例工程git clone https://gitcode.com/gh_mirrors/add/addict区分“成功”与“失败”模式匹配 status 参数 ⚡钩子在成功和失败时都会触发两者的status与第三个参数不同status第三个参数含义:ok用户模型user model操作成功:error错误信息列表操作失败如密码错误、邮箱重复利用函数重载就能在同一个钩子里写出分支逻辑def log(conn, :ok, model) do IO.puts(登录成功用户 ID: #{model[:id]}) conn end def log(conn, :error, errors) do IO.puts(登录失败: #{inspect(errors)}) conn end由此可以实现“仅在登录失败时计数防暴力破解审计”“仅在注册成功时发奖励”等精细策略。常用后置操作钩子场景清单 场景建议钩子思路登录审计 / 风控post_login:error分支按来源累计失败次数注册即送奖励post_register:ok分支创建奖励记录欢迎邮件post_register在 Addict 自带发信之外补充业务邮件会话清理post_logout删除该用户的缓存数据改密通知post_reset_password通知用户密码已变更 建议钩子保持轻量。发邮件、调外部接口等耗时操作放到后台任务或消息队列中执行避免拖慢登录接口的响应时间。避开 3 个常见坑 忘记返回conn—— 钩子是响应管线的一环漏写返回值会导致请求无法正常返回。把第三个参数当成用户模型处理——:error时拿到的是错误列表直接取model[:id]会崩溃务必用模式匹配区分。配置位置写错—— 钩子必须写在config :addict,配置块内而不是应用自己的配置块中生成配置后先确认文件里已有:addict段。小结Addict 后置操作钩子 5 个配置 1 套签名5 个钩子post_register、post_login、post_logout、post_recover_password、post_reset_password统一签名(conn, status, params) - conn成功拿到用户模型失败拿到错误列表用模式匹配分流不配置即不启用配置后立即生效从post_login开始接第一个钩子跑通后再逐个补齐其余四个你的 Phoenix 应用就拥有了完整的用户行为扩展点。【免费下载链接】addictUser management lib for Phoenix Framework项目地址: https://gitcode.com/gh_mirrors/add/addict创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考