用途:该技能面向 Phoenix 1.8+ 的认证与授权,用基于 Scope 的机制替代传统的 current_user,把用户、角色、权限和租户信息统一封装在 Scope 结构中,并将授权判断集中到上下文函数与 Scope 上。
主要能力:定义 Scope 结构(含 user、role、permissions、tenant 等字段);提供 for_user/1、anonymous/0(返回 user: nil 的匿名 Scope)、authenticated?/1、can?/2 等函数;permissions_for/1 按角色返回权限列表。支持在 LiveView 中挂载与校验 Scope,并在模板和事件处理中做安全访问控制。
使用方式:在模板中通过 assigns[:current_scope] 访问,避免未认证时崩溃;向上下文函数传入 scope 而非裸 user;变更类事件用 Scope.can?/2 做服务端授权。迁移路径:先定义 Scope 结构,再更新 on_mount 钩子(用 scope 赋值替换 user),将 @current_user 替换为 @current_scope.user(可选访问用 assigns[:current_scope]),最后把上下文函数参数改为 scope,并逐步运行 mix test 验证。
适用场景:Phoenix 1.8+ 项目中需要集中式授权、多租户或基于角色权限校验的登录、仪表盘等场景;文档给出了 LiveView 及上下文测试示例。
限制:资料未提供具体依赖版本范围、性能数据、许可与价格信息;示例代码仅作为参考,实际项目需按自身结构调整。