7e6424e9ac17c4a28a381c22758953dee6098c0f
1. 权限检查优化
- 使用 hasPermission('dify:bind:update') 替代硬编码的角色判断
- 支持细粒度的权限控制,市级管理员可以通过授权获得编辑权限
- 保留降级方案,provincial_admin 角色自动拥有所有权限
2. 错误处理优化
- 新增统一的 handleApiError 错误处理函数
- 优先显示后端返回的具体错误信息(error.response.data.msg)
- 支持多种错误格式的提取(axios、fetch、自定义格式)
- 简化 handleCreate、handleUpdate、handleDelete 的错误处理代码
3. 调试支持
- 添加权限检查的调试日志,便于排查问题
- 输出当前路由、用户角色、权限列表等关键信息
修复问题:
- 市级管理员被授予 dify:bind:update 权限后,编辑按钮仍不显示
- 403 错误只显示通用提示,无法看到后端返回的具体错误原因
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
智慧法务系统 - 权限认证系统
认证系统概述
本系统实现了一个简单的基于角色的权限认证系统,支持以下功能:
-
用户可以以不同角色登录系统:
common:普通用户,只能访问基本功能developer:开发者,可以访问所有功能,包括系统设置
-
权限控制:
- 根据用户角色显示或隐藏菜单项
- 防止通过URL直接访问未授权页面
技术实现
权限系统基于以下核心技术实现:
- Cookie会话存储:使用Remix的
createCookieSessionStorage创建基于Cookie的会话存储 - 角色权限控制:将用户角色存储在会话中,并在全局loader中检查访问权限
- 界面适配:根据用户角色动态过滤显示菜单项
使用方法
登录系统
- 访问登录页面(
/login) - 输入用户名和密码
- 选择用户角色:
- 普通用户:只能看到基础功能菜单
- 开发者:可以看到所有菜单,包括系统设置
权限验证
系统会自动执行以下权限验证:
- 未登录用户会被重定向到登录页面
- 普通用户试图访问系统设置等受限页面会被重定向到首页
- 侧边栏菜单会根据用户角色动态显示
关键文件
app/root.tsx:实现会话管理和全局权限检查app/components/layout/Sidebar.tsx:根据用户角色显示不同菜单app/routes/login.tsx:提供角色选择功能
进一步优化建议
- 实现真实的用户认证系统,如接入数据库验证用户
- 添加更细粒度的权限控制
- 实现用户角色和权限的管理界面
- 使用环境变量管理会话密钥等敏感信息
Welcome to Remix!
Development
Run the dev server:
npm run dev
Deployment
First, build your app for production:
npm run build
Then run the app in production mode:
npm start
Now you'll need to pick a host to deploy it to.
DIY
If you're familiar with deploying Node applications, the built-in Remix app server is production-ready.
Make sure to deploy the output of npm run build
build/serverbuild/client
Styling
This template comes with Tailwind CSS already configured for a simple default starting experience. You can use whatever css framework you prefer. See the Vite docs on css for more information.
Description
Languages
JavaScript
72.4%
TypeScript
23.8%
CSS
3.6%