第4章 页面级权限控制的原型实现:动态面板切换显示/隐藏、条件判断结合角色变量

1. 用户场景

某企业内部管理系统分为「管理员」与「普通用户」两种角色。管理员登录后可见「用户管理」「系统配置」「审计日志」三个模块;普通用户登录后仅可见「任务看板」「个人中心」,且「任务看板」中的「删除任务」按钮对普通用户隐藏。产品经理需要在 Axure 中构建可交互的原型,用于验证页面级权限控制的逻辑正确性与体验完整性。

典型用户故事:“作为管理员,我希望登录后能看到所有管理功能;作为普通用户,我希望只能看到与我工作相关的模块,避免界面信息过载。”

2. 业务问题

  • 权限粒度粗放:同一页面内不同功能区域对不同角色可见性不同,静态页面无法表达这种差异。
  • 交互反馈缺失:角色切换后页面区域不能自动更新,导致演示时需手动解释“这里管理员才看得到”。
  • 条件逻辑复杂:多个功能模块的显示/隐藏依赖同一个角色变量,但彼此之间互有嵌套关系,容易产生逻辑冲突。

3. 需求拆解

需求编号 需求描述 涉及角色 优先级
PR-04-01 页面顶部导航栏根据角色显示/隐藏「系统管理」入口 管理员 / 普通用户 P0
PR-04-02 「任务看板」页面中的「删除任务」按钮仅对管理员可见 管理员 / 普通用户 P0
PR-04-03 「审计日志」整页区域只对管理员开放,普通用户访问时显示“无权限”提示 管理员 / 普通用户 P1
PR-04-04 角色变量在原型启动时通过全局变量初始化,支持演示中手动切换角色 管理员 / 普通用户 P0

4. 方案表达

使用 Axure 的 动态面板(Dynamic Panel)作为页面级权限控制的核心载体。每个需要权限控制的功能区域独立封装为一个动态面板,面板内包含两个状态:「可见状态」与「隐藏/无权限状态」。通过 全局角色变量(userRole)结合 条件判断(Case)控制面板状态的切换。

4.1 动态面板状态定义

动态面板名称 状态 A(管理员可见) 状态 B(普通用户可见) 默认状态
nav_system 显示「系统管理」导航项 隐藏该导航项(占位留空) A
btn_deleteTask 显示「删除任务」按钮 隐藏按钮(或置灰不可点击) B
page_auditLog 显示审计日志完整内容 显示“您无权限访问此模块”提示 B

4.2 条件判断规则配置

在 Axure 的「交互」面板中,为每个动态面板添加 页面加载时(OnPageLoad) 用例,配置条件判断逻辑。规则示例如下:

用例名称:初始化角色面板
条件:If 全局变量 [[userRole]] 等于 "admin"
  动作:设置动态面板 nav_system 为状态 A(可见)
       设置动态面板 btn_deleteTask 为状态 A(可见)
       设置动态面板 page_auditLog 为状态 A(可见)
否则(Else):
  动作:设置动态面板 nav_system 为状态 B(隐藏)
       设置动态面板 btn_deleteTask 为状态 B(隐藏)
       设置动态面板 page_auditLog 为状态 B(无权限提示)
关键交互逻辑:所有面板状态切换集中在一个 OnPageLoad 用例中管理,避免分散维护导致逻辑不一致。角色切换演示时,通过按钮修改全局变量 userRole 并重新加载页面,即可触发全部面板刷新。

4.3 方案流程图

下图展示了从角色变量读取到动态面板状态切换的完整决策链路:

页面级权限控制 · 动态面板切换流程 用户登录系统 全局变量 userRole 角色判断 admin user 管理员面板(状态A) 普通用户面板(状态B) 受限功能模块 可见 隐藏/无权限 说明:角色变量 userRole 在原型启动时由全局变量初始化,演示者可通过切换按钮修改该变量并触发页面刷新, 所有动态面板自动根据新角色切换到对应状态,无需手动逐个调整。

5. 指标验证

  • 面板切换响应正确率:在角色变量变更后,所有受控动态面板在 1 次页面刷新内全部切换到正确状态,正确率应达到 100%。
  • 条件判断覆盖度:覆盖 admin 和 user 两种角色,每种角色至少验证 3 个动态面板的状态是否符合预期。
  • 无状态冲突:不存在同一个动态面板同时被多个条件分支设置为不同状态的情况。

6. 验收标准

验收项 验收方法 预期结果
管理员角色面板状态 设置 userRole = "admin",刷新页面 导航显示「系统管理」;任务看板显示「删除任务」按钮;审计日志显示完整内容
普通用户角色面板状态 设置 userRole = "user",刷新页面 导航隐藏「系统管理」;任务看板隐藏「删除任务」按钮;审计日志显示“无权限”提示
角色切换后状态刷新 从 admin 切换到 user,刷新页面 所有面板从 A 状态切换为 B 状态,无残留
条件判断无冲突 审查所有 OnPageLoad 用例 每个动态面板在同一个用例中只被设置一次状态

7. 交付物模板

本章交付的原型文件应包含以下结构:

文件/组件 说明 类型
全局变量 userRole 字符串类型,默认值为 "admin",用于存储当前演示角色 变量配置
动态面板 nav_system 2 个状态:状态 A(显示导航项)/ 状态 B(隐藏) 动态面板
动态面板 btn_deleteTask 2 个状态:状态 A(显示按钮)/ 状态 B(隐藏按钮) 动态面板
动态面板 page_auditLog 2 个状态:状态 A(完整内容)/ 状态 B(无权限提示) 动态面板
OnPageLoad 用例 包含 if-else 条件判断,集中管理所有面板状态切换 交互用例
角色切换演示按钮 2 个按钮:点击后修改全局变量并触发页面刷新,用于演示角色切换 交互元件
常见避坑提示:动态面板的默认状态必须与初始角色变量一致(建议默认设为 admin 对应的状态 A),否则原型加载时会出现短暂的状态闪烁。另外,条件判断中务必使用“等于”而非“包含”,避免变量值部分匹配导致逻辑错误。