核心思路:用户 + 角色 + 权限 三层架构,贴合工控场景(操作员 / 工程师 / 管理员),可直接集成到 WinForm/WPF 项目。
一、三层核心架构(必做)
工控场景最优解,易扩展、好维护
权限:绑定具体操作(如参数修改、程序下载、报警清除、配方管理)
角色:预设 3 类(适配工控),批量分配权限
操作员:仅监控、启停,无修改权
工程师:可参数修改、配方编辑,无系统配置权
管理员:全权限 + 用户管理
用户:绑定 1 个角色,登录验证后加载权限
二、关键落地步骤(4 步搞定)
1. 定义核心实体类(直接复制用)
2. 权限验证核心工具类(全局调用)
3. 工控场景 2 种权限控制(项目必用)
方式 1:控件显隐 / 禁用(最常用)
登录后自动控制按钮、菜单是否可用,贴合工控操作习惯
方式 2:功能方法拦截(防绕过控件操作)
关键操作(如写 PLC、改配方)加权限校验,避免用户通过快捷键 / 代码绕过控件
4. 数据存储(2 种方案适配工控)
轻量方案(单机上位机):用XML/Json文件存储用户、角色、权限,无需数据库
专业方案(多机联网):用SQLite/MySQL存储,支持多客户端同步权限
推荐单机上位机用 Json,读写简单:
三、工控场景优化要点(避坑)
密码加密:绝对不存明文,用MD5/SHA256加密,示例:
2.自动登出:工控机长时间无人操作,定时调用AuthManager.Logout(),避免权限泄露
3.日志记录:关键权限操作(如改参数、下程序)记录日志,方便追溯
4.角色不可删:操作员、管理员角色默认保留,仅可修改权限,避免误删导致无权限登录
四、快速集成步骤(直接落地)
复制上面的实体类 + AuthManager 工具类到项目
预设 3 个角色及对应权限,初始化用户列表
登录窗体调用AuthManager.Login()验证
主窗体加载时调用InitPermission()初始化控件权限
关键功能方法加HasPermission()校验
源码:https://download.csdn.net/download/kylezhao2019/92534011