权限相关标签
在模板里按当前用户权限决定显示什么,以及为什么菜单隐藏不等于权限控制。
取权限状态
{naicha:if var="perms.content.delete" eq="1"}
<button class="danger">删除</button>
{/naicha:if}
权限点以 perms.权限名 的形式提供,有权限为 1。
常用权限点
| 权限点 | 含义 |
|---|---|
content.view | 查看内容 |
content.create | 新建内容 |
content.edit | 编辑内容 |
content.delete | 删除内容 |
content.review | 审核内容 |
content.import / content.export | 导入 / 导出 |
model.manage | 管理内容模型 |
category.manage | 管理栏目 |
message.view / message.delete | 查看 / 删除留言 |
user.manage / role.manage | 管理用户 / 角色 |
setting.manage | 站点设置 |
log.view | 查看操作日志 |
license.manage / update.apply | 授权 / 在线更新 |
最重要的一条:模板里隐藏菜单和按钮只是 界面处理,不是权限控制。
真正的拦截发生在服务端 —— 每个后台动作都会再校验一次权限,直接输 URL 也绕不过去。
反过来,如果只做了界面隐藏而没做服务端校验,那就等于没做。
三层权限如何叠加
- 角色权限:一套预设,决定这个角色大概能干什么
- 用户级覆盖:在角色基础上,对某个用户额外授予或收回个别权限
- 栏目可见范围:限定这个用户只能看到指定栏目(含其子栏目)下的内容
最终权限 = 角色权限 ∪ 额外授予 − 被收回,再与栏目范围取交集。三层都在用户管理页配置。
「只看自己的」这类限制型权限
绝大多数权限是「放开」,但 content.owonly 是收紧:勾上之后,该用户在内容列表里只能看到自己发布的,也不能编辑或删除别人的内容。