跳转动作无权限问题排查

版本: 5.0.X以上

现象

配置了一个跳转动作,并配置了加载函数。点击跳转到另一个页面,发现弹出“无权限进行该操作”错误。

跳转动作无权限问题排查

原因

权限那边配置动作权限也都给了权限,但是为什么会出现这种情况呢?大概率是因为没有配置加载函数的权限,导致报错。

跳转动作无权限问题排查

排查路径

5.0.X 以上版本权限控制是通过请求载荷里面的variables参数携带的path路径进行鉴权的。这个path路径是通过菜单名字一层一层拼接的。这个报错的根本原因就是因为这个无权限的请求的path路径下,没有这个加载函数的权限。所以要解决问题很简单,只需要在这个路径下配置上这个加载函数的权限就可以了。

跳转动作无权限问题排查

① 跳转页面是弹窗打开或抽屉打开:这种情况新打开的页面的path路径是不会变的,所使用的还是外面表格页面的路径,所以只需要把该加载函数配置到外面表格页面并隐藏掉,然后在权限那边配置上该动作权限问题就解决了。

跳转动作无权限问题排查

② 跳转页面是新窗口打开,这个时候新打开的页面的path路径是会变成新窗口所在的路径,所以只需要把该加载函数配置到跳转页面上,并隐藏掉,然后在权限那边配置上该动作权限问题也可以解决。

跳转动作无权限问题排查

③ 如果这个加载函数不需要有页面交互,或者页面和函数不属于同一个模型,则可以直接把这个函数改为Function绕过权限验证就好。

Oinone社区 作者:yexiu原创文章,如若转载,请注明出处:https://doc.oinone.top/wen-ti-zhen-duan/18678.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(0)
yexiuyexiu
上一篇 2024年10月29日 am10:56
下一篇 2024年10月29日 pm3:49

相关推荐

  • O2M、M2O、M2M关系字段配置问题以及问题排查路径

    M2O关系字段 配置示例: @Field(displayName = “教师关联学生”) @Field.many2one @Field.Relation(relationFields = {“studentName”}, referenceFields = {“name”}) private Student students; 解析: 在这个多对一关系中,studentName为本模型的字段,name为Student的字段,这个多对一关系通过这两个字段关联起来。 在保存该关联关系时,会将name的值带到studentName里并保存在当前模型中(many) studentName字段必须是存储字段,因为在查询many的数据的时候是通过这个字段进行查询的。 name必须在关系模型即Student里面定义(one),studentName在本模型里面定义不定义都可以,如果没有的话会在本模型中创建该字段。 常见问题: 启动报错:根据报错内容进行相应修改 保存报错:Duplicate entry '******' for key 'PRIMARY',报这个错是因为studentName是唯一键,在将相同name的值赋值给studentName时导致唯一键冲突。其他关系也会有此情况。 O2M关系字段 配置示例: @Field(displayName = "教师关联宠物") @Field.one2many @Field.Relation(relationFields = {"id"}, referenceFields = {"teacherId"}) private List<PetShop> studentsCode; 解析: 在这个一对多关系中,id为本模型的字段,teacherId为PetShop的字段,这个一对多关系通过这两个字段关联起来。 在保存该关联关系时,会将id的值带到teacherId里并保存在PetShop模型中(many) id必须在本模型中定义(one), teacherId在PetShop模型里面定义不定义都可以,如果没有的话会在PetShop模型中创建该字段。 常见问题: 启动报错:根据报错内容进行相应修改 保存报错:请先保存关联关系模型:如果 id 为自定义字段 与 PetShop进行关联,那么保存关联关系时必须给id 赋值,不然会报错 M2M关系字段 配置示例1: @Field.many2many(through = OrderRelLogistics.MODEL_MODEL, relationFields = {"parentOrderId"}, referenceFields = {"logisticsBillId"}) @Field.Relation(relationFields = {"id"}, referenceFields = {"id"}) @Field(displayName = "物流单") private List<LogisticsBill> logisticsBillList; 解析: 在这个多对多关系中,id(左)为本模型的字段,id(右)为PetShop的字段。OrderRelLogistics.MODEL_MODEL为中间表,在保存关联关系时中间表会维护双方的关系字段,id(左)的值写到中间表的parentOrderId字段,id(右)的值写到中间表的logisticsBillId字段。 常见问题: 保存报错,请先保存关联关系模型:如果id(左)为在本模型自定义的字段,则需要在保存关联关系的时候的时候将该自定义赋值,这样才能正确保存关联关系。 配置示例2: 新增TalentTypeEnum @Dict(dictionary = TalentTypeEnum.DICTIONARY,displayName = “达人类型”) public class TalentTypeEnum extends BaseEnum { public static final String DICTIONARY =”top.TalentTypeEnum”; public final static TalentTypeEnum DOG =create(“DOG”,1,”狗达人”,”狗达人”); public final static TalentTypeEnum CAT =create(“CAT”,2,”猫达人”,”猫达人”); } 中间表定义 @Model.model(PetItemRelPetTalent.MODEL_MODEL) @Model(displayName = “中间表”, summary = “中间表”) public class PetItemRelPetTalent extends BaseRelation { public static final String MODEL_MODEL = “top.PetItemRelPetTalent”; @Field.String @Field(displayName = “商店ID”) private String petItemId; @Field.String @Field(displayName = “宠物ID”) private String petTalentId; @Field.String @Field(displayName = “宠物类型”) private TalentTypeEnum talentType; } 关系字段定义(关联关系中,使用”##“包括定义常量,这里定义常量"test") @Field(displayName = “推荐达人”) @Field.many2many( through = PetItemRelPetTalent.MODEL_MODEL, relationFields = {“petItemId”}, referenceFields = {“petTalentId”,”talentType”} ) @Field.Relation(relationFields = {“id”}, referenceFields = {“id”, “#2#”})…

    2024年8月9日
    00
  • 新增模块不存在

    后端代码新增了一个模块,但在前端看不到新增的模块,主要排查以下几个方面 检查启动参数中是否添加-Plifecycle=INSTALL。 启动工程的yml文件中在pamirs: boot: modules: 中是否添加了该模块 启动工程的pom文件是否依赖该该模块所在包 检查启动工程是否扫描到了该模块所在包

    2024年7月23日
    00
  • 调试工具在业务场景的使用-后端

    这篇文档主要介绍在业务场景中,使用调试工具解决后端问题的思路。 调试工具的使用见文档:问题排查调试工具使用手册 调试工具的页面内容介绍:Oinone平台可视化调试工具 例1:模型配置不存在 现象:点击详情报模型配置不存在错误 排查路径: 将报错请求复制到接口调试出,查看调试信息 在调试信息页面,可以看到全部堆栈,利用堆栈信息找报错问题。 可以看到执行了StudentAction的queryOne方法在42行有问题 检查代码发现传进queryList的wrapper参数没有指定模型编码。添加模型编码问题解决 例2:无权限问题排查 现象:用户前端自定义跳转工作流审批页面,提示无权限 排查路径: 将报错请求复制到接口调试处,查看调试信息 查看debug信息中权限上下文中角色携带的权限是否正确。复制debug信息中的path路径,去权限上下文中搜索查看该路径下所有的权限。 根据上面的path路径搜索权限信息: ~~~ "getRoleActionPermissionsByViewAction:workbench.WorkBenchWorkflowUserTaskActive:WorkflowMenus_WorkBenchMenu_ActiveUserTaskMenu": { "630732547466232342": { "/workflow/WorkflowMenus_WorkBenchMenu_ActiveUserTaskMenu/ACTION#workbench.WorkBenchWorkflowUserTaskActive#workflow_write/ACTION#workflow.WorkflowUserTask#workflow_writeturnon": 1, "/workflow/WorkflowMenus_WorkBenchMenu_ActiveUserTaskMenu/ACTION#workbench.WorkBenchWorkflowUserTaskActive#workflow_wait/ACTION#workflow.WorkflowUserTask#workflow_agree": 1, } }, ~~~ 参数介绍: 630732547466232342:角色id为630732547466232342拥有的所有权限信息 /workflow/WorkflowMenus_WorkBenchMenu_ActiveUserTaskMenu:path路径 /ACTION#workbench.WorkBenchWorkflowUserTaskActive#workflow_write:此path路径下面的ACTION,模型为workbench.WorkBenchWorkflowUserTaskActive的workflow_write动作。 对比无权限页面和以上参数是否对应。可在页面url上查看模型,动作。常见问题有模型不匹配(更换为正常有权限的模型)、角色下无动作权限。 经查看调试信息发现,设置的该角色下并无所需动作的权限信息,考虑由于前端自定义跳转页面没有配置sessionPath所致。 由于5.0版本权限是根据路径进行鉴权的,请求载荷中variables需要携带path路径。 如果是用户自定义跳转页面,需要配置sessionPath:/workflow/WorkflowMenus_WorkBenchMenu_ActiveUserTaskMenu,值为url中的path路径。

    2024年9月26日
    00
  • 工作流工作台无权限排查路径

    现象:用户前端自定义跳转工作流审批页面,提示无权限 排查路径: 5.0版本权限是根据路径进行鉴权的,请求载荷中variables需要携带path路径。 示例:path=/management_center/AuthMenus_RoleAndPermission_SystemPermission如果是用户自定义跳转页面,需要配置sessionPath:,值为url中的path路径 查看debug信息中权限上下文中角色携带的权限是否正确 复制debug信息中的path路径,去权限上下文中搜索查看该路径下所有的权限 ~~~ “getRoleActionPermissionsByViewAction:workbench.WorkBenchWorkflowUserTaskActive:WorkflowMenus_WorkBenchMenu_ActiveUserTaskMenu”: { “630732547466232342”: { “/workflow/WorkflowMenus_WorkBenchMenu_ActiveUserTaskMenu/ACTION#workbench.WorkBenchWorkflowUserTaskActive#workflow_write/ACTION#workflow.WorkflowUserTask#workflow_writeturnon”: 1, “/workflow/WorkflowMenus_WorkBenchMenu_ActiveUserTaskMenu/ACTION#workbench.WorkBenchWorkflowUserTaskActive#workflow_wait/ACTION#workflow.WorkflowUserTask#workflow_agree”: 1, } }, ~~~ 参数介绍: 630732547466232342:角色630732547466232342拥有的所有权限信息 /workflow/WorkflowMenus_WorkBenchMenu_ActiveUserTaskMenu:path路径 /ACTION#workbench.WorkBenchWorkflowUserTaskActive#workflow_write:此path路径下面的ACTION,模型为workbench.WorkBenchWorkflowUserTaskActive的workflow_write动作。 对比无权限页面和以上参数是否对应。可在页面url上查看模型,动作。常见问题有模型不匹配(更换为正常有权限的模型)、角色下无动作权限。

    2024年8月6日
    00
  • 保存多值字段SQL执行报错

    定义多值类型时,字段类型应该设置为List类型。 @Field.String @Field(displayName ="经费证明", multi = true, serialize = Field.serialize.JSON) private List<String> matchFund; 场景复现

    2024年8月30日
    00

Leave a Reply

登录后才能评论