微信扫码
添加专属顾问
我要投稿
掌握dify权限验证的三种方案,提升系统安全性。 核心内容: 1. 前端接口调用中的权限验证方法 2. 定制前端界面实现角色和标签控制 3. 后端数据库查询及代码结构分析
我在浏览器检查模式下查看接口调用的时候,发现接口http://10.1.0.65:8001/console/api/apps?page=1&limit=30&name=&is_created_by_me=false
发现有个一个参数 is_created_by_me。
从字面上看,就是是否只查询自己的,既然怀疑了,那就动手试一下,我在dify中新添加一个账户。
进去以后能看到全部。
在Edge浏览器下,我右键
1
,编辑并重新发送2
,我把参数值改为true3
,通过4
我们可以看到请求值已经改变了,通过5
,可以看到返回的数据为空。
然后我又看了下其他的接口发现两个接口
console/api/workspaces/current
返回值有一个normal
的
console/api/account/profile
返回的是个人信息角色
同时,在dify的工作室,我们通过标签查询
那我们可以怎么做?
通过tags_ids
去查,总感觉别扭,数据少了还行,数据多了,在生产上就是找事。我就翻下dify的数据库。
我们在部署dify的时候有个.env
文件,这里有pg数据库的
使用Navicat Premium Lite
连接数据库
在apps表中,我发有一个is_public和created_by
在dify的数据库里,我们可以很明显的看到一个
apps
表,打开表以后,我们可以看到两列is_public
和created_by
。
那代码里有没有使用呢?我们翻下代码。
不得不说dify
的代码结构还是很规范的,根据接口console/api/apps
,我们能很轻松的找到对应的接口实现,然后没有看到我关注的is_public
字段。
我再翻下更新接口的代码,
在代码里并没有对is_public
的操作。看来这个是商业版的功能或者是未来开放的功能。
前后端加上这个字段难度不大。
我们可以直接在这里根据用户的角色进行改造。在对应的表tenant_account_joins
可以设置新的角色,然后在代码里进行处理。
先画个简单的流程图。
新建一个Chatflow流程。
在chatFlow中有一个会话变量,用于存储会话中的上下文,也就是只要你一直在同一个会话,就可以保存着。
点击1
,然后点击2
,添加变量loginStatus
变量,1登录成功,0是未登录。
登录成功后我们进行变量赋值,把
loginStatus
变量设置为1。
整体流程如下:
1
用户输入问题2
先校验用户的状态,如果已经登录直接到7
,未登录到3
3
校验用户有无填写密钥,填写则到4
4
通过http校验用户有无权限,有权限到5
,无权限,直接回复5
有权限流转到6
,6
设置变量loginStatus为1
,然后流转到工作流53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-09-07
Dify发布页面用户鉴权方案讨论
2025-09-06
全网首发!Dify 2.0.0 图文混排上线,每个新功能都是爆款!附实战教程(建议收藏)
2025-09-06
Dify 参数提取器用法剖析
2025-09-06
Dify 夏日更新速递|功能概览
2025-09-06
夏日终章,Dify 放出“解暑大招”——v1.7→v1.8 升级包,专治各种“流程便秘”!
2025-09-06
Dify v2.0.0-beta.1悄悄的来啦!看看有哪些大更新?
2025-09-05
Dify 1.8.1发布了,看看带来了哪些变化?
2025-09-04
Dify发布了V1.8.1版本,专注于提升稳定性、性能和开发者体验,解决部分关键问题,让我们一起来看看吧!
2025-06-25
2025-06-30
2025-06-29
2025-06-24
2025-07-02
2025-06-26
2025-06-25
2025-07-11
2025-06-17
2025-08-19
2025-09-06
2025-09-05
2025-08-29
2025-08-18
2025-08-02
2025-07-30
2025-06-26
2025-06-17