Files
election-system/docs/admin-management.md
T

3.1 KiB

管理端使用说明

管理端入口为 /admin。未认证请求会返回 401,不会展示任何选民、候选人、计票所或区域数据。

身份配置

主站使用 ASP.NET Core Identity 保存本地用户名、密码哈希、失败次数、锁定时间与安全戳;浏览器管理端使用 __Host-election-auth 安全 Cookie。登录入口是 /account/login,退出使用 POST /account/logout。

首次部署时,先执行数据库迁移,再通过用户机密或环境变量提供一次性的首个系统管理员信息:

dotnet user-secrets set "Bootstrap:SystemAdministrator:UserName" "admin" --project src/ElectionSystem.Api
dotnet user-secrets set "Bootstrap:SystemAdministrator:DisplayName" "系统管理员" --project src/ElectionSystem.Api
dotnet user-secrets set "Bootstrap:SystemAdministrator:Password" "替换为至少12位的高强度密码" --project src/ElectionSystem.Api

应用启动后会创建该账号并授予无地域绑定的 SystemAdministrator。确认首次登录成功后,立即删除密码机密:

dotnet user-secrets remove "Bootstrap:SystemAdministrator:Password" --project src/ElectionSystem.Api

此后在“本地用户”页面创建、停用、恢复及重置其他账号密码,再在“地域角色”页面授权业务范围。停用或重置密码会更新安全戳,使既有 Cookie 会话失效。

页面职责

  • /admin/dashboard:仅显示当前授权范围内的汇总。
  • /admin/regions:首次启动会自动导入随应用发布的 AreaCity 四级目录;村/社区使用本地确认目录。/admin/region-import 仅用于受控版本更新。
  • /admin/voters 与 /admin/voter-import:按地域维护选民、预校验并确认 Excel 导入。若身份信息不能进入本系统,/admin/voter-import 可按有权辖区登记未具名的补充人数并填写原因;它独立于选民档案,只用于登记总量展示,绝不用于线上资格、已投状态或重复投票判断。与具名名单并存时,汇总数必须只填未具名部分,避免重复统计。选民列表使用每页 50 条的游标分页,并支持省→市→区县→镇街四级级联筛选。
  • /admin/candidates:维护候选人资料和服务端允许的状态转换。
  • /admin/roles:系统管理员授予地域管理员、计票员或监督员角色。
  • /admin/counting-stations:建立辖区计票所,并向已获地域角色的人员分配具体计票所;列表同样使用游标分页及四级级联筛选。

对应管理 API 提供 GET /api/admin/voters/cursor、GET /api/admin/counting-stations/cursor、GET /api/admin/candidates/cursor 与 GET /api/admin/administrative-regions/cursor。cursor 只能用于同一组筛选条件;筛选范围、下级地域展开和管理员地域授权均在服务端先行执行。非法游标或跨层级、越权的行政区划参数会返回 400,不会放宽数据范围。

管理端用于第二阶段基础资料与授权操作。选举活动、匿名投票、线下双录计票和公开结果将在后续阶段接入相应菜单,且不会通过本阶段页面绕过其规则。