YiShaAdmin权限管理系统首次运行攻略:5个高频坑与部署自查清单
【免费下载链接】YiShaAdmin基于 .NET Core MVC 的权限管理系统,代码易读易懂、界面简洁美观项目地址: https://gitcode.com/GitHub_Trending/yi/YiShaAdmin
YiShaAdmin 是一个基于 .NET Core MVC 的权限管理系统,内置员工、部门、角色、菜单、字典与定时任务等功能。读完本文,你能按顺序完成环境自查、数据库初始化、首次运行与首次登录,并拿到一份 5 个高频坑的快速排障卡,让后台框架一次跑通。
🧭 部署前自查清单:逐项核对 5 项
部署权限管理系统之前,先花几分钟把下面 5 项过一遍,能避开多数启动问题:
| 检查项 | 推荐值或状态 | 查看方式 | 不满足的后果 |
|---|---|---|---|
| .NET SDK 版本 | 与你使用的分支一致(本仓库默认分支为 netcoreapp3.1) | dotnet --list-sdks | 编译失败,提示缺少运行时框架 |
| 数据库服务 | MySQL 或 SQL Server 正在运行 | 用客户端工具手动连接 | 登录页报数据库连接错误 |
| 连接字符串 | 与真实库类型、账号一致 | 打开YiSha.Web/YiSha.Admin.Web/appsettings.json | 应用能启动但页面查不到数据 |
| 端口占用 | 5000(Web)、5001(WebApi)空闲 | 浏览器访问对应端口 | 启动时提示端口被占用 |
| 依赖包 | 全部恢复成功 | dotnet restore输出无错误 | 编译中断、引用缺失 |
✅ 跑通后台框架:配置数据库并用 dotnet run 启动
第 1 步,建库。SQL Server 用户建一个名为YsData的空库(与默认配置一致);MySQL 用户建一个名为YiShaAdmin的空库。
第 2 步,执行初始化脚本。脚本放在 Document/DatabaseScript 目录,结构脚本与数据脚本都要执行,数据脚本里才有管理员账号和菜单。一句话:脚本会先删表再建表(目录内_readme.txt有明确提示),有真实数据的库千万不要执行。
mysql -u root -p < Document/DatabaseScript/mysql.sql之后用同样方式执行mysql_data.sql;SQL Server 用户在 SSMS 中依次执行sqlserver.sql和sqlserver_data.sql。
第 3 步,核对连接配置。Web 项目appsettings.json默认DBProvider为"SqlServer"、库名YsData。改用 MySQL 时,把DBProvider改为"MySql",并把DBConnectionString换成你自己的地址与账号密码。
第 4 步,启动项目。
dotnet restore dotnet run进程固定监听 5000 端口(见项目Program.cs中的UseUrls配置),浏览器打开http://localhost:5000即出现登录页。需要接口端时,进入YiSha.Web/YiSha.Admin.WebApi目录再执行一次dotnet run,它监听 5001 端口。
📎 用默认账号登录并核对菜单权限
登录页标题下方直接标注了默认账号:用户名admin、密码123456,验证码为 3 位字符,输错点击图片可刷新。
登录成功后进入仪表盘,左侧是「单位组织」「系统管理」「系统工具」三大模块:
初始化是否到位,核对三处即可:
- 「系统管理」→「菜单管理」:菜单树应完整,为空说明数据脚本没导入。
- 「系统管理」→「角色管理」:应存在「管理员」角色且已分配菜单权限。
- 「单位组织」→「员工管理」:admin 账户应挂在「管理员」角色下,角色字段位于编辑表单中:
常见误操作:改完 admin 密码没记新密码;给 admin 账户取消勾选「管理员」角色后再也登不进完整界面(只能靠数据库重置角色)。
🛠️ 踩坑速查卡:5 个高频坑
坑 1:dotnet run 提示运行时框架缺失或 SDK 版本不匹配
- 症状:启动命令直接报错,或编译阶段就失败。
- 最可能原因:本仓库默认分支目标框架为
netcoreapp3.1,你机器上装的 SDK 不是这个版本。 - 修复:
- 查看本机已装 SDK:
dotnet --list-sdks- 没有 3.1 就安装 .NET Core 3.1 SDK;或按 README 的版本对照表切到
YiShaAdmin-Net7、YiShaAdmin-Net6等分支。
坑 2:应用能启动,页面却报数据库连接错误
- 症状:浏览器能打开,但登录框或页面弹出数据库相关报错。
- 最可能原因:① 初始化脚本没执行,库和表不存在;②
DBProvider与实际连接字符串不匹配。 - 修复:
- 建库后按顺序执行结构脚本 + 数据脚本。
- 在
appsettings.json核对DBProvider与DBConnectionString两项(Web 项目默认SqlServer+YsData)。 - 用同一套账号先手动连库验证,再启动应用。
坑 3:admin/123456 登录提示用户名或密码错误
- 症状:账号密码确认无误,登录始终被拒。
- 最可能原因:只执行了结构脚本,没执行数据脚本,SysUser 表里没有 admin 记录。
- 修复:
- 补跑对应的数据脚本(
mysql_data.sql或sqlserver_data.sql)。 - 核对 3 位验证码,看不清就点击图片刷新再输。
- 补跑对应的数据脚本(
坑 4:登录后菜单为空,或部分按钮置灰
- 症状:能登录,但左侧菜单树为空,或某些操作按钮看不到。
- 最可能原因:① 菜单与角色授权数据未导入;② 当前账户没挂在「管理员」角色下。
- 修复:
- 到「菜单管理」确认树完整,再到「角色管理」给「管理员」角色勾选全部菜单权限。
- 回「员工管理」编辑账户重新勾选角色。系统权限细到按钮级权限标识,缺按钮权限就不显示该按钮。
坑 5:定时任务建好了,却一次都没执行
- 症状:任务已创建,执行日志始终为空。
- 最可能原因:任务状态没有置为「启用」。
- 修复:
- 「系统工具」→「定时任务」,把状态开关拨到启用。
- 先用简单频率验证 Cron 表达式(每 5 分钟一次:
0 0/5 * * * ?),再去「定时任务日志」看结果与下次执行时间。 - 仍不执行时重启
dotnet run,并确认服务器时间正确。
⚙️ 生产加固三件套:缓存、连接池、多环境
缓存:默认CacheProvider为"Memory",开发够用;生产改为"Redis",并把RedisConnectionString指向自己的地址(配置默认值为127.0.0.1:6379):
docker run -d -p 6379:6379 redis:alpine连接池:直接在连接字符串末尾追加连接池参数,例如pooling=true;max pool size=20;。WebApi 项目的 MySQL 连接字符串默认就带这套参数,可参照它的写法。
多环境配置:项目按环境加载appsettings.{Environment}.json,仓库里已有appsettings.Development.json,照此再建一份生产配置即可:
export ASPNETCORE_ENVIRONMENT=Production建议:敏感配置不进代码,全部收敛到按环境的配置文件中。
📋 排障三问与场景组合速览
按三问自查链走一遍,大部分故障能当场定位:
| 自查问题 | 检查方式 | 通过标准 |
|---|---|---|
| 能启动吗? | 执行dotnet run,看终端输出 | 无报错,提示监听 5000 端口 |
| 能连上数据库吗? | 打开浏览器,尝试登录 | 登录框不出现数据库连接错误 |
| 能登录吗? | 用 admin/123456 登录 | 进入仪表盘,左侧菜单树完整 |
不同场景的推荐组合:
| 场景 | 推荐组合 | 注意事项 |
|---|---|---|
| 个人开发测试 | Memory 缓存 + 本地单库 | 数据会丢,别存重要内容 |
| 小团队协作 | SQL Server + Memory 缓存 | 定期备份数据库 |
| 生产环境 | MySQL + Redis 缓存 | 上线前改掉 admin 默认密码 |
| 高并发 | 数据库读写分离 + Redis | 架构复杂,先压测再上 |
🏁 收尾:要做的与不要做的清单
按「跑起来 → 登录 → 核对权限」的顺序走完,这套权限管理系统就算正式上线可用;多数故障本质是配置和数据脚本问题,按顺序排查不会绕远路。
- ✅ 生产环境先改掉 admin 的默认密码
- ✅ 定期清理登录、操作、Api 三类日志表
- ✅ 配置差异放进各环境的 appsettings 文件
- ❌ 不在有真实数据的库上执行初始化脚本
- ❌ 不把连接字符串和密码硬编码进代码
- ❌ 不把 5000、5001 端口直接暴露公网,前面挂反向代理
要新增业务模块时,照抄「员工管理」这类现成模块的 Entity、Service、BLL、Controller、View 五层结构,替换字段定义即可,代码风格保持一致,后续维护会轻松很多。
【免费下载链接】YiShaAdmin基于 .NET Core MVC 的权限管理系统,代码易读易懂、界面简洁美观项目地址: https://gitcode.com/GitHub_Trending/yi/YiShaAdmin
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考