67837df8d0
- 新增全套考试卷、评估卷、参考答案与考试培训包模板 - 修正slidev培训课件:调整模块标题、链路图缩放,替换工单示例为通用业务对象 - 修正课堂红线表述为证据红线,将小组作业调整为个人作业要求 - 新增权限、状态流转、审计日志、看板指标四类可复用业务规则块 - 整理AI工程技能交付包,迁移旧资产至客户专属交付包并统一术语 - 新增考试输出模板与TRAE使用记录文档
130 lines
4.1 KiB
Markdown
130 lines
4.1 KiB
Markdown
# 模块 2:权限控制方案生成
|
|
|
|
<div class="mt-6 text-sm">
|
|
|
|
权限不是按钮隐藏。工单模块必须同时覆盖菜单权限、按钮权限、接口权限和数据权限。
|
|
|
|
</div>
|
|
|
|
<div class="grid grid-cols-4 gap-4 mt-8 text-sm">
|
|
<div class="p-4 rounded-xl bg-blue-500/10 border border-blue-500/30 text-center">
|
|
<div class="font-bold">菜单</div>
|
|
能否进入页面
|
|
</div>
|
|
<div class="p-4 rounded-xl bg-emerald-500/10 border border-emerald-500/30 text-center">
|
|
<div class="font-bold">按钮</div>
|
|
能否看到操作
|
|
</div>
|
|
<div class="p-4 rounded-xl bg-amber-500/10 border border-amber-500/30 text-center">
|
|
<div class="font-bold">接口</div>
|
|
能否直接调用
|
|
</div>
|
|
<div class="p-4 rounded-xl bg-purple-500/10 border border-purple-500/30 text-center">
|
|
<div class="font-bold">数据</div>
|
|
能看到哪些工单
|
|
</div>
|
|
</div>
|
|
|
|
<!--
|
|
前端按钮不是安全边界。
|
|
如果只隐藏删除按钮,但后端删除接口没有权限校验,就是典型漏洞。
|
|
第四天要把权限闭环做完整。
|
|
-->
|
|
|
|
---
|
|
|
|
# 工单权限字符建议
|
|
|
|
<div class="mt-5 text-sm">
|
|
|
|
```md
|
|
work:order:list
|
|
work:order:query
|
|
work:order:add
|
|
work:order:edit
|
|
work:order:delete
|
|
work:order:assign
|
|
work:order:transition
|
|
work:order:audit
|
|
work:order:dashboard
|
|
```
|
|
|
|
</div>
|
|
|
|
<div class="mt-5 p-3 rounded-xl bg-amber-500/10 border border-amber-500/30 text-sm">
|
|
权限字符必须统一命名,否则前端、后端、菜单配置和 Review 清单会对不上。
|
|
</div>
|
|
|
|
<!--
|
|
权限字符是工程资产。
|
|
同一个动作不要一会叫 delete,一会叫 remove,一会叫 ticket:delete。
|
|
统一命名后,AI 和人才能沿着权限字符追踪前后端实现。
|
|
-->
|
|
|
|
---
|
|
|
|
# 权限控制方案表
|
|
|
|
<div class="mt-5 text-xs">
|
|
|
|
| 操作 | 前端入口 | 权限字符 | 后端接口 | 数据权限 | 验收 |
|
|
|---|---|---|---|---|---|
|
|
| 新增工单 | 新增按钮 | work:order:add | /workOrder/add | 无 | 无权限账号返回 403 |
|
|
| 删除工单 | 删除按钮 | work:order:delete | /workOrder/delete | 管理员范围 | 非管理员返回 403 |
|
|
| 指派工单 | 指派按钮 | work:order:assign | /workOrder/assign | 团队范围 | 研发账号不可指派 |
|
|
| 状态流转 | 状态按钮 | work:order:transition | /workOrder/transition | 工单可见范围 | 非法角色不能流转 |
|
|
| 查看看板 | 看板菜单 | work:order:dashboard | /workOrder/dashboard/* | 管理范围 | 只读用户不可访问 |
|
|
|
|
</div>
|
|
|
|
<!--
|
|
权限方案必须写清前端入口、权限字符、后端接口、数据权限和验收方式。
|
|
这样后续 Review 才有依据。
|
|
-->
|
|
|
|
---
|
|
|
|
# 权限落地检查
|
|
|
|
<div class="mt-5 text-sm">
|
|
|
|
| 检查项 | 通过标准 |
|
|
|---|---|
|
|
| 菜单权限 | 菜单配置有对应权限字符 |
|
|
| 按钮权限 | 无权限用户看不到敏感按钮 |
|
|
| 接口权限 | 直接请求敏感接口被拒绝 |
|
|
| 数据权限 | 不同角色只看到授权范围 |
|
|
| 验收记录 | 有账号、操作、结果和证据 |
|
|
|
|
</div>
|
|
|
|
<!--
|
|
课堂实操时,不要求只看代码。
|
|
要用不同账号或模拟请求验证:前端不可见只是第一步,后端拒绝才是强制边界。
|
|
-->
|
|
|
|
---
|
|
|
|
# rules 要落到这些位置
|
|
|
|
<div class="mt-5 text-sm">
|
|
|
|
| rule 条款 | 代码落点 | 验证项 |
|
|
|---|---|---|
|
|
| 四层校验 | 菜单配置、按钮权限、Controller、Service 查询 | 无权限账号不可见且接口失败 |
|
|
| 权限字符有来源 | 菜单表、路由、按钮指令、后端注解 | 同一字符贯穿前后端 |
|
|
| 数据权限后端校验 | 列表、详情、导出、看板查询 | 改请求参数不能越权 |
|
|
| 敏感字段最小返回 | 列表接口、详情接口、审计展示 | 不暴露不必要 old/new value |
|
|
|
|
</div>
|
|
|
|
<div class="mt-4 p-3 rounded-xl bg-emerald-500/10 border border-emerald-500/30 text-sm">
|
|
让 TRAE 改权限前,先把相关 rule 和权限控制方案一起给它。
|
|
</div>
|
|
|
|
<!--
|
|
这页解决一个常见问题:rules 写了,但代码生成时没有真正用上。
|
|
课堂实操时,可以要求学员在提示词里同时附上当前项目 rules、权限矩阵和权限控制方案。
|
|
这样 TRAE 在修改前端按钮、后端接口、查询条件和审计展示时,有明确约束。
|
|
-->
|