Skip to content

越权拦截与权限排查 ​

网页端在功能权限之外还有一层硬拦截:即使有人手工拼出 URL 或直接调接口,没有授权也进不去。本文列出这三层拦截各自的表现、原样提示语和排查顺序,用来回答「为什么他看不到」「为什么他点保存报无权限」「明明配了还没生效」这三类问题。

一、功能概述 ​

一次操作从上到下要穿三层,任何一层没过都会停在不同的现象上:

层拦什么没过时的表现
菜单层左侧菜单里显示哪些功能、URL 能不能打开菜单里没有这一项;直接访问 URL 出现「无权访问」页或接口返回 您没有权限访问此功能
动作层窗口里的按钮:编辑、审核、反审核、导出、查看成本价、查看日志按钮不出现或置灰;强行调用返回 无审核权限 / 无反审核权限
数据层列表和详情里能看到谁做的单列表只剩自己做的单;打开别人的单据被拒

三层读的是同一套授权数据(机构授权 ∪ 角色授权),区别只在检查的时机和返回的形式。

二、界面布局说明 ​

菜单层被拦时,浏览器地址直接访问会拿到一张独立的拦截页,整页内容只有四样:

  • 页面标题 无权限;
  • 一枚橙色 ⚠️ 图标;
  • 一行大字 无权访问,下面一行说明 您没有权限访问此页面,请联系管理员开通;
  • 一个 返回首页 链接,跳回后台首页。

如果请求是页面内的异步调用(点按钮、加载表格),不会跳页,接口返回一条 403,前端弹出提示 您没有权限访问此功能。同一份拦截逻辑对两种请求给出两种形态,所以「打开页面白屏一下弹个提示」和「整页变成无权访问」是同一个原因。

三、业务操作步骤 ​

遇到「无权访问」时的排查顺序 ​

  1. 确认人。 让当事人看右上角当前登录的编号与姓名,常见情况是登错了同事的账号。
  2. 确认菜单权限。 到 系统管理 → 用户管理 → 角色分配,选这个人点 加载,看这个角色是否勾了;再回客户端「机构和权限」看他所属机构的授权。
  3. 确认三级校验。 到 系统管理 → 角色管理 → 功能授权,看这个功能的父模块和顶级模块是否也勾了。只勾叶子是最常见的配法错误。
  4. 确认动作层。 菜单能进、页面能开,只是某个按钮没有或报错,那是窗口权限项没给,在同一行的「窗口菜单权限」里补勾。
  5. 等缓存。 以上都改过并保存后,最多等五分钟;角色页与用户角色分配页的保存会主动刷新缓存,客户端改的机构授权不会。
  6. 重新登录。 让对方退出再登,排除会话里带的是旧权限快照。

判断是数据权限还是功能权限 ​

  1. 列表能看到但只有一小部分单据,且缺的都是别人做的 → 数据权限。给这个窗口补勾「允许查看他人单据」。
  2. 列表完全打不开、菜单里也没有 → 菜单权限。
  3. 能看不能改、点编辑没反应 → 动作层的「可编辑」权限。
  4. 能改不能审核 → 审核动作的权限项。

给一个外部审计人员配最小可见范围 ​

  1. 系统管理 → 角色管理 → 新增,命名 审计只读。
  2. 功能授权 → 功能菜单:只勾需要查看的报表叶子,父模块与顶级模块同步勾上;窗口权限只给 查看日志、导出数据,不给 编辑、不给 查看成本价。
  3. 公共权限 页签不勾任何项。
  4. 单据类窗口不勾「允许查看他人单据」,让他只能看到自己做的单;确实需要看全量时再单独放开。
  5. 人员绑定 加进审计人员,保存。

四、字段详细说明 ​

提示语对照表 ​

原文提示出在哪一层直接原因
无权访问 / 您没有权限访问此页面,请联系管理员开通菜单层(整页)访问的 URL 不在该用户的允许清单里
您没有权限访问此功能菜单层(异步请求)同上,请求由页面内按钮发出
无审核权限动作层点「单据生效」时缺该窗口的审核权限
无反审核权限动作层点「单据反审」时缺该窗口的反审权限
您的账号未绑定手机号,请联系管理员登录层新设备验证要求手机号,用户档案里为空
您的账号手机号格式不正确,请联系管理员登录层档案里的手机号不是 11 位纯数字
检测到新设备登录,请验证手机号登录层该「用户 + 设备」不在受信列表

URL 拦截的匹配规则 ​

规则说明
拦截范围只拦后台页面路径下的请求,静态资源与媒体文件不拦
匹配方式精确匹配或前缀匹配,允许清单里一条授权可覆盖其下所有子路径
内置放行后台首页、退出登录、修改密码等公共页面始终放行,不受授权影响
新增功能放行网页端新增、在 ERP 菜单表里没有对应项的功能(如提醒设置)不做菜单校验,始终放行
会话有效期后台会话 30 分钟无操作失效,关闭浏览器即失效

缺省放行的边界 ​

以下情况系统按「有权限」处理,配权限时不要误以为已经收紧:

  • 该窗口的这项权限名在系统里根本没登记;
  • 该窗口一条权限项都没配过;
  • 该公共权限项不存在于权限定义表;
  • 该 URL 没有 ERP 菜单对应项。

要收紧必须先让权限项存在,再谈授权。

五、典型使用场景 ​

报表能打开但导出按钮不见了。 导出是窗口权限项 导出数据,到功能授权页对应菜单项那一行补勾,保存后让对方关掉页签重开。

销售同事看不到别人开的销售单。 销售类单据启用了数据权限,给他的角色补上销售单窗口的「允许查看他人单据」。注意个别单据类型(如季节品订单)强制只看自己做的,补权限也放开不了。

财务能看凭证但点不了审核。 审核是独立的动作权限,与「可编辑」不是一回事,需要在窗口权限里单独给。

用户说昨天还能用今天不行。 依次核对:是否被换了所属部门、角色绑定是否被清理、是否只是会话过期重新登录(此时若换了设备还会先撞新设备验证)。

给新门店批量配权限。 不要在网页端逐人建角色。先在客户端按同类型门店给新机构授权,网页端只负责把人挂到这个机构下。

六、权限控制与前置条件 ​

  • 排查用的 用户管理、角色管理、机构管理 三个入口本身也需要 系统管理 模块授权,普通业务岗看不到这些菜单属正常。
  • 修改机构授权在客户端「机构和权限」完成,网页端只能改角色这一侧;两边写的是同一张授权表。
  • 客户端侧的权限约束(只有正式员工与兼职关系参与权限计算、上级取消会连带下级等)同样适用于网页端读到的这份数据,见 60权限设置常见报错与业务约束。
  • 收银终端与云 POS 分组的菜单权限在网页后台另有独立配置入口,与本文的功能授权互不影响。

七、常见问题 ​

配完权限刷新页面没反应。 权限结果缓存 300 秒,且页签里已打开的功能可能带着旧快照。关掉页签、退出重登,或等五分钟。

同一个人在两台电脑权限不一样。 功能权限不区分设备;差异通常来自新设备验证卡在登录环节,或两边登录的不是同一个编号。

给某人建了角色也绑了人,他还是看不到菜单。 九成是三级校验没过——父模块或顶级模块没勾。先补勾上级,再看是否保存。

想临时禁掉某个人的所有功能。 别动权限。到 用户管理 把他的 允许登陆 开关关掉,恢复快、不留副作用。

直接访问 URL 能看到别人的单据详情。 数据层对详情页有独立拦截:未获「允许查看他人单据」的人访问他人单据会直接被拒。若确实出现越权,先确认这个人是否属于超级管理员编号——超管在窗口权限与数据权限判定处直接放行。

接口报 403 但页面能打开。 页面打开走的是菜单层,接口调用还要过动作层,两层权限项不同名,需要分别配。

相关文档 ​