如何构建用于设备与访问跟踪的 Web 应用
学习如何规划、设计并构建一个用于跟踪员工设备与访问权限的 Web 应用,包含入职、调拨与离职的明确工作流。

为 v1 明确定义问题与范围
在选择数据库或绘制界面之前,先把你要解决的问题说清楚。员工设备跟踪应用很容易变成“什么都跟踪”的大工程——因此 v1 应专注于能减少损失并防止访问错误的核心要素。
决定必须跟踪的内容(和可以忽略的内容)
从会带来实际风险或重复工作的项目开始列清单:
- 设备: 笔记本、台式机、平板、手机
- 外设: 显示器、扩展坞、充电器、耳机
- 软件许可证: 需要分配历史的席位类工具
- 物理访问: 工牌、钥匙、门禁、停车证
为每个类别写下日常运营所需的最少字段。举例:对笔记本,可能需要 asset_tag、序列号、型号、状态、当前使用人和位置。这样能让你的资产管理 Web 应用立足于日常决策,而不是“可有可无”的数据。
明确相关方与决策拥有人
设备与访问权限管理处于多个团队之间,需要明确谁负责创建、批准与审计变更:
- IT: 设备清点、设备分配工作流、归还与维修
- HR: 入职日期、角色变更、触发离职检查清单
- 设施: 钥匙、房间、座位位置
- 安全: 工牌发放、访问组、合规要求
- 团队经理: 业务理由、审批、例外情况
你做的不只是收集需求——你要决定当某件东西丢失或访问被错误授予时谁承担责任。
定义可衡量的成功指标
选择几个从第一天就能跟踪的指标,例如:
- 减少“丢失”资产并加快找回速度
- 缩短入职时间(请求 → 分配 → 就绪)
- 减少离职时遗漏的访问移除
- 更清晰的审计轨迹与合规证据(谁在何时更改了什么)
锁定 v1 范围(把其他功能放到储备池)
一个好的 v1 提供可靠的员工库存跟踪、基础的 RBAC 和简单的审计轨迹。把高级功能(条码/二维码扫描、更深的报表,以及与 HRIS/IdP/工单的集成)留到核心工作流运行并被采用后再做。
建模你的数据:员工、设备与访问权限
良好的数据建模会让后续的一切更容易:工作流、权限、审计历史与报表。对于第一个版本,把实体数量保持在较少,同时对标识符与状态字段严格要求。
员工:选择一个“可信唯一标识”
选择一个不会被重用的员工唯一标识。许多团队使用 HR 提供的 employee_id 或公司邮箱。邮箱使用方便,但可能会变更;HR ID 更稳妥。
决定员工记录的来源:
- HR 系统同步(长期最优):员工会被自动创建/更新。
- 手动录入(最快启动):添加校验规则以及“inactive/terminated”标志。
存储分配所需的基础信息:姓名、团队/部门、位置、经理和雇佣状态。避免在员工记录上内嵌访问/设备列表;把它们建模为关系。
设备:标准化类型,捕获便于搜索的属性
把设备项(单个资产)与设备类型(笔记本、手机、工牌读卡器)区分开。每个设备项都应有唯一的资产标签以及任何厂商识别符。
首日应包含的常见属性:
- 序列号、型号、采购日期、质保截止日期
- 状况(例如 new/good/damaged)与生命周期状态(in_stock/assigned/in_repair/retired)
- 当前位置(办公室、库存室、远程)
访问权限:把访问当作一类第一等资产
广义定义访问类型:SaaS 应用、共享盘、VPN、物理门、权限组/角色。一种实用模型是 Access Resource(例如 “GitHub 组织”、“财务盘”、“总部门”)以及将员工与该资源关联的 Access Grant,含状态(requested/approved/granted/revoked)。
工作流:及早绘制状态转换图
在构建界面前,先把主要流程的数据如何变化画出来:分配、归还、调拨、维修 与 淘汰。如果你能把每个流程表达为一个简单的状态变化加上时间戳与“操作者”,随着系统增长你的应用会保持一致性。
设定角色、权限与审批规则
如果你的应用同时跟踪设备与访问权限,权限并非“可选项”——它们是控制体系的一部分。及早定义角色,以便围绕它们构建界面、工作流和审计规则。
从明确的岗位角色开始
一个实用的 v1 角色集合通常包括:
- Admin: 管理配置(位置、设备类型、访问系统)、用户账户与紧急覆盖权限。
- IT Technician: 分配/回收设备、更新设备状态(in_stock/issued/lost)、发起访问请求。
- Manager: 批准直属下属的访问请求并确认离职步骤。
- Auditor: 只读历史、报表与证据(谁在何时为什么批准了什么)。
- 只读: 查看记录但不能修改(帮助台、安保前台、HR 合作伙伴)。
按动作而非按页面实施最小权限原则
避免“全有或全无”的访问。把权限拆分为与风险对应的动作:
- 查看员工档案 vs 编辑员工档案
- 分配设备 vs 标记为遗失/淘汰
- 请求访问 vs 批准访问 vs 撤销访问
- 导出报表(通常比想象中更敏感)
还要考虑字段级别限制:例如 Auditor 可以查看审批日志与时间戳,但不能查看个人联系方式。
在高风险情形下加入审批流程
设备分配可能由 IT 自行处理,但特权访问通常需要审批。常见规则:
- 经理审批:对高级访问(管理面板、生产系统、财务工具)需经理同意
- 时限访问:临时项目的访问应有到期日
- 必填理由:敏感请求需带上理由并与审批记录一起保存
强制职责分离
对于敏感操作,防止同一人既创建又批准:
- 请求人不能审批自己的申请
- 实施访问的人员不能是唯一审批者
这会让审计轨迹更可信,并在不拖慢日常工作的情况下减少“走形式”风险。
设计核心工作流与检查清单
工作流是设备与访问跟踪应用真正有用的地方。不要只存“谁拥有什么”,而要引导人们完成可复用的步骤,明确责任、截止期与下一步动作。
从三个核心检查清单开始
构建逐步检查清单以覆盖常见生命周期节点:
- 入职: 请求笔记本与外设、分配手机(如需)、授予标准应用、确认完成并记录签收。
- 角色变动: 审查当前访问、为新角色添加/移除工具、可选地调换设备并记录审批者。
- 离职: 锁定/转移账户、安排设备归还、确认接收、擦除/重装系统并关闭工单。
每个清单项应有:负责人(IT、经理、HR、员工)、状态(Not started → In progress → Done → Blocked)和证据字段(评论、附件或引用)。
在不打断流程的情况下处理例外
现实很少总是顺畅,因此在任意案件中都应能触发“例外操作”:
- 设备丢失: 记录上次已知持有人、标记为丢失、创建替换任务并记录事件细节。
- 紧急访问: 授予有时限的访问,要求理由并自动到期。
- 临时借出: 启动借用记录,含归还日期、预期状况与轻量的签入步骤。
SLA、提醒与定期复审
定义简单的服务期望:离职后 X 天内归还设备、24 小时内确认借出等。为清单项添加截止日期并向当前负责人发送提醒。
对于访问权限,为敏感系统安排周期性任务(如每 90 天复核)。输出应是明确的决定:保留、移除或升级处理。
保持状态与“下一步动作”清晰可见
设计工作流时让用户永远不会怀疑下一步该做什么。每个案件都应展示:
- 当前状态(例如 “等待员工归还”)
- 下一步动作(简洁可执行的一句话)
- 谁负责以及截止时间
这样可以保持流程流转,而不会把你的应用变成项目管理工具。
选择技术栈与高层架构
该应用会涉及敏感数据(谁拥有什么设备、谁能访问哪些系统),因此“最佳”技术栈通常是你团队能在未来几年自信运维的那个,尤其是在下班时间有人需要紧急处理离职事项时。
选择团队可以支持的栈
挑选与团队技能与既有生态匹配的框架。常见且在内部工具中被验证的选择包括:
- Node.js + Express(或 NestJS): 如果组织已使用 TypeScript 且想要灵活的 API
- Django: 强大的 admin 工具、快速的 CRUD 开发与成熟的安全默认设置
- Ruby on Rails: 对构建以工作流为主的内部工具非常高产
- Laravel(PHP): 约定丰富,很多公司有广泛的人才库
无论选择哪种,优先考虑:良好的认证库、数据库迁移工具以及实现 基于角色的访问控制(RBAC) 的明确方法。
如果你想更快交付首个内部版本,也可以用 Koder.ai 这类平台原型化——通过聊天描述工作流生成工作 React UI 与 Go + PostgreSQL 后端,方便快速搭建 CRUD、RBAC 与审批流,且在准备好自行维护时代码可导出。
决定部署方式:VM、托管平台或容器
部署选择对运维影响大于对功能的影响:
- 云 VM(简单): 你需要管理操作系统更新、扩容与备份
- 托管平台(运维最快): 类似 Heroku 的平台或云应用服务负责大部分运维工作
- 容器(Docker + Kubernetes/ECS)(最灵活): 适合已有容器化基础设施并希望环境可复现的团队
对很多团队来说,托管平台是快速且可靠的内部资产管理 Web 应用部署路径。
为环境(开发、预发、生产)做规划
从第一天就设置三套环境:
- Dev:日常开发(本地 + 共享 dev)
- Staging:镜像生产以测试审批流和集成
- Production:严格控制访问、备份与监控
把配置放在环境变量中(数据库 URL、SSO 设置、存储桶),不要写死在代码里。
绘制最小架构图
用一个简单的图让所有人共享同一心智模型:
- UI: 前端(服务端渲染或 SPA)用于仪表盘与搜索
- API: 处理分配、归还和访问权限变更的业务逻辑
- 数据库: 关系型存储(通常 Postgres)用于员工、设备与访问授权
- 文件存储: 可选,用于收据、照片、签署表单
这个小“地图”能防止不必要的复杂化,并在系统成长时保持内部工具架构的可理解性。
设计 UI:仪表盘、搜索与详情页
一个跟踪应用的成败取决于人们多快能回答几个简单问题:“谁拥有这台笔记本?”,“哪些东西缺失?”,“今天应当移除哪些访问?”把 UI 围绕这些日常场景设计,而不是数据库表。
从四个关键页面开始
把这些页面作为“主页面”来搭建,每个页面都有明确目的与可预测布局:
- 员工档案: 单处查看已分配设备、有效访问权限、未完成请求与近期变更时间线
- 设备列表: 以库存表格展示资产,含状态(assigned/available/retired)、位置与最后更新
- 访问列表: 系统与组(如 GitHub 组织、VPN、薪资系统)的访问清单,展示谁拥有什么以及到期/复核日期
- 请求队列: 需要处理的审批与动作(新员工设置、调动、离职),按紧急程度排序
把搜索与筛选做成一等公民
在顶部导航放置全局搜索,并让它更宽容:姓名、邮箱、序列号、资产标签与用户名都应可搜索。
在列表页面把筛选当作核心功能而非附加选项。常用且回报高的筛选器包括:
- 人员、部门、经理
- 序列号 / 资产标签
- 状态(assigned、pending return、lost、revoked)
- 日期范围(分配日期、最近审计、离职日期)
把筛选状态保存在 URL 中,便于与同事共享视图(也方便以后返回)。
设计表单以防止错误
大多数错误发生在数据录入阶段。使用 下拉 选择部门与设备型号,员工使用 typeahead,并对任何审计时需要的字段设为必填(序列号、分配日期、审批者)。
即时校验:如果序列号已被分配、访问权限与策略冲突或归还日期在过去,应发出警告。
支持快速操作(无需搜索)
在员工与设备详情页,将一组主要操作放在显眼位置:
- 分配 设备
- 归还 设备
- 撤销 访问
- 生成收据(PDF 或可打印页面用于交接/归还)
执行操作后立即显示明确的确认与更新状态。如果用户不能信任展示的状态,他们会回到电子表格去重复工作。
构建数据库模式与审计历史
干净的数据库模式能使设备与访问跟踪应用值得信赖。对于大多数内部工具,关系型数据库(PostgreSQL 或 MySQL)是最佳选择,因为你需要强一致性、约束和便于报表的结构。
从“当前状态”表开始
建模那些你每天会查询的实体:
- employees: id、name、email、status(active/offboarding/terminated)、department
- equipment: id、asset_tag、serial_number、type、model、status(in_stock/assigned/retired)
- access_resources: id、system_name、resource_name、owner_team
然后添加表示当前分配关系的表:
- equipment_assignments: id、employee_id、equipment_id、assigned_at、expected_return_at、returned_at(可空)
- access_grants: id、employee_id、access_resource_id、granted_at、revoked_at(可空)
这种结构能让你轻松回答:“Alex 现在拥有哪些物品?”而不用扫多年历史记录。
把历史与审批作为一等数据来考虑
当历史是事后补上的,审计往往会失败。创建记录事件随时间变化的表:
- assignment_events(或让每条分配记录不可变并用结束时间标注)
- access_grant_events(requested/granted/revoked/expired)
- approvals: request_id、approver_id、decision、decided_at、reason
一个实用模式是:每次状态变更写入一行,不覆盖以前的记录——只追加。
添加能防止错误数据的约束
使用数据库规则来阻止脏记录:
- 在 serial_number 与 asset_tag 上加唯一约束
- 外键约束确保有效的 employee_id 与 equipment_id
- 检查约束比如
returned_at >= assigned_at - 部分唯一性以防止设备被双重分配(例如:每台设备只有一个“打开”的分配)
及早决定保留策略
定义人员或资产“删除”时的处理方式。为满足合规与调查需求,优先使用软删除(例如 deleted_at)并保持审计表为追加式。按记录类型设定保留策略(例如,访问与审批历史保留 1–7 年),并将其记录在案以便法务/HR 审批。
实现 API 层与业务逻辑
你的 API 是关于“谁被分配了什么、谁批准了、何时发生”的唯一可信来源。一个清晰的 API 层能防止棘手边缘情况泄露到 UI,并便于后续的集成(例如扫描器或 HR 系统)。
定义资源与端点(REST 或 GraphQL)
从核心名词与动作建模:员工、设备、访问权限与工作流(分配、归还、离职)。
REST 示例端点:
GET /api/employees、GET /api/employees/{id}GET /api/equipment、POST /api/equipment、PATCH /api/equipment/{id}POST /api/assignments(分配设备)POST /api/returns(归还设备)GET /api/access-rights与POST /api/access-grantsGET /api/workflows/{id}与POST /api/workflows/{id}/steps/{stepId}/complete
GraphQL 也可行,但对内部工具而言 REST 往往更快实现,并且缓存/分页更直观。
每次写入都做校验
即便 UI 已做校验,服务端也必须在每次创建/更新时校验。示例:
- 如果设备已经被分配,则不能再次分配(除非显式支持调拨)
- 如果必需步骤缺失,则离职工作流不能标记为“完成”
- 访问授权必须符合允许的系统与有效的到期规则
校验错误应一致且易读。
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Equipment is already assigned to another employee.",
"fields": { "equipmentId": "currently_assigned" }
}
}
(上面代码块保持原样,不做翻译)
让关键操作幂等
分配/归还操作常由不稳定网络触发(移动端扫码、重试、双击)。加入幂等键(或确定性请求 ID)以防止重复请求创建多条记录。
支持分页、排序与可预测错误
列表端点从一开始就应包含分页与排序(例如:?limit=50&cursor=...&sort=assignedAt:desc)。保持错误码稳定(401、403、404、409、422),让 UI 能正确响应,尤其是冲突类错误(如“已归还”或“需要审批”)。
加强认证、授权与日志记录的安全性
对设备与访问跟踪应用而言,安全不是“可有可无”的——它是记录谁能做什么以及何时发生改变的核心。一些早期的有意选择能避免很多后患。
认证:优先 SSO,否则邮箱+MFA
如果公司已有身份提供商(Okta、Azure AD、Google Workspace),优先集成 SSO。它降低密码风险,并简化入职/离职:在 IdP 禁用用户即可切断所有访问。
若无 SSO,使用邮箱/密码加 MFA(TOTP 认证器或 WebAuthn)。避免把 SMS 作为默认二次验证手段。添加基本防护如速率限制、账户锁定阈值与会话过期。
授权:把 RBAC 存在数据库并在服务端强制执行
把权限当作数据来管理,而非写死的规则。把角色与权限存在数据库(例如 Admin、IT、HR、Manager、Auditor),并分配给用户或团队。
对每个敏感动作在服务端做权限校验——不要只依赖隐藏的按钮。例如:
- HR 可以查看员工的访问权限,但编辑可能只限 IT
- 撤销访问可能需要经理审批
- 某些系统(薪资、财务)只允许小范围人员编辑
一个实用模式是政策/守卫层(例如 canGrantAccess(user, system)),在 API 端点与后台任务中统一使用。
审计日志:让敏感操作可追溯
为审查与调查记录以下操作:
- 访问授权与撤销
- 角色变更与权限更新
- 设备分配/归还(尤其是高价值物品)
记录内容应包含:执行者、受影响对象、时间戳、旧值 → 新值,以及可用时的理由/评论。审计日志应为追加式。
传输、密钥与会话强化
全站强制 HTTPS。对密钥(API 密钥、集成令牌)加密存储并限制可读权限。设置安全会话与 Cookie(HttpOnly、Secure、SameSite),并在必要时分离管理员会话。
如果日后添加集成与扫描功能,把这些端点置于相同的认证规则之下并记录它们的活动。
增加扫描与集成(可选但高价值)
在核心跟踪工作流稳定后,扫描与集成能减少大量重复劳动。把它们当作 v1.1 的“增强功能”,不要把首发建在你并未完全控制的外部系统上。
条码/二维码扫描用于更快的分配
添加条码/二维码支持是 ROI 很高的升级。一个简单流程:扫码 → 打开设备记录 → 分配给员工,能显著减少查找时间与录入错误。
一些实用选择有助成功:
- 使用耐用的标签并在码下方打印短的人可读 ID(摄像头失败时有用)
- 同时支持相机扫描(移动端)与 USB 扫描器(桌面)
- 决定二维码是否编码内部 ID(推荐)或序列号(如果格式多样则更冒险)
谨慎规划集成(HR、目录、工单)
集成能让数据更可信,但前提是你为每个字段定义了“可信来源”。
常见且高价值的集成:
- HR 导入: 员工状态、经理、部门、入/离职日期
- 目录组: 将组映射到应用角色或访问权限(避免在没有审批的情况下自动授予敏感权限)
- 工单工具: 为入职/离职检查清单创建或关联工单
先从小处做起:先做只读导入,待可靠后再扩展为更新或基于事件的同步。
后台任务与定期访问复核
不要把同步与访问复核依赖于人工点击。使用后台任务处理:
- 每夜 HR/目录同步与不匹配告警
- 定期访问复核(例如季度)并发送提醒
- 自动检测“孤立”资产(分配给非活跃员工)
将任务结果可见化:最后运行时间、变更项与失败及重试策略。
面向审计的导出(并严格控制权限)
审计人员常要 CSV 导出。提供设备分配、访问权限与审批历史的导出,但要严格控制:
- 仅授权角色能导出(并记录每次导出)
- 按部门/地点限制导出范围(如适用)
- 考虑为下载链接设过期时间并在导出文件中加水印(请求者 + 时间戳)
如果已有审计轨迹功能,导出应包含“何时发生了什么”的字段,而不仅是最新状态。相关指南可链接到 /blog/audit-trail-and-compliance。
测试、部署与持续改进
发布内部工具不是“部署后就忘记”。该类系统牵涉入职、安全与日常运营——因此上线前要有信心,上线后要有持续改进计划。
测试最重要的工作流
把测试重心放在真实用户旅程而非孤立页面。为最有风险或最繁重的工作流编写自动化测试(并准备若干手动脚本):
- 入职: 分配笔记本/工牌、授予基础访问、确认签收
- 调拨: 在员工/团队间移动设备、角色变更时调整访问
- 离职: 撤销访问、归还设备、处理异常(缺失、远程员工)
- 丢失/损坏: 记录事件、触发替换、更新审计日志
尽量包含“非理想路径”(无经理审批、物品已被分配、访问已被撤销),让应用优雅失败。
为用户测试准备逼真的演示数据
一个带有可信数据的预发环境会让反馈更有价值。准备:
- 部门、地点与成本中心
- 常见设备类型(笔记本型号、显示器、钥匙、工牌)
- 多种角色(HR、IT、经理、审计)
- 若干脏数据样例(逾期未归还、共享设备、重名)
这能让相关方在不动生产数据的情况下验证搜索、报表与边缘情况。
安全上线策略
从试点组开始(一个团队或一个办事处)。做短期培训并在应用里提供简洁的“如何做 X” 页面(例如 /help/offboarding)。收集 1–2 周反馈,核心流程顺畅后再逐步推广。
监控、学习与迭代
上线后关注:
- 错误率与慢接口
- 最常用路径(分配设备、撤销访问、离职)
- 中途放弃的环节(填写表单但未完成)
用这些数据优先改进:更清晰的校验、更少的点击、更合理的默认值,以及每天节省时间的小自动化。
常见问题
设备与访问跟踪应用的版本 1 应该包含什么?
为 v1 明确“完成”的定义:可靠跟踪高风险资产与访问、基础审批流程和审计日志。
一个务实的 v1 通常包括:
- 员工、设备项、访问资源与授权关系
- 分配/归还/调拨 + 离职流程
- 基本 RBAC 角色(Admin/IT/Manager/Auditor/只读)
把额外功能(二维码扫描、深度报表、HRIS/IdP/工单集成)留到核心流程被采纳之后再做。
我们应该先跟踪哪些设备和访问类型?
优先跟踪会造成资产损失或访问错误的项目,而不是把公司所有资产都纳入。
适合 v1 的类别:
- 设备(笔记本、手机、平板)
- 外设(扩展坞、显示器、充电器)
- 许可证(基于席位且需要分配历史的工具)
- 物理访问(工牌、钥匙)
对每类只记录日常运营所需字段(例如:资产标签、序列号、状态、使用人、位置)。
哪个是员工的最好“可信标识”?
使用不会被重用的唯一标识。通常由 HR 提供的 employee_id 比邮箱更安全,因为邮箱可能会变更。
如果先用人工录入,应增加:
- 校验(防止重复)
- 雇佣状态字段(active/offboarding/terminated)
- 为每个字段明确“数据来源”的决策(姓名、经理、部门等)
我们应该如何建模访问权限,以便后续审批和审计更容易?
把访问当作数据来建模,而不是放在员工记录上的一个复选框。
实用结构:
- Access Resource(访问资源):被访问的对象(例如 “VPN”、“财务盘”、“总部门”)
- Access Grant(访问授权):与员工的关系,含状态与时间戳(requested/approved/granted/revoked/expired)
这让审批、过期和审计变得直接,不需要大量特例逻辑。
版本 1 需要哪些角色和权限才能安全运行?
从基于岗位的角色开始,然后按动作细分权限(最小权限原则)。
常见 v1 角色:
- Admin、IT Technician、Manager、Auditor、只读
常见动作级权限:
- 查看 vs 编辑 员工资料
- 分配/归还 vs 标记为遗失/淘汰
- 请求 vs 批准 vs 撤销 访问
- 导出报表(往往比想象中更敏感)
务必在服务端强制执行所有权限,不要只通过隐藏 UI 按钮来控制。
设备分配的数据库设计模式有哪些推荐?
使用关系型数据库(常见 PostgreSQL),采用“当前状态表 + 追加式历史”模式。
典型的当前状态表包括:
employees、equipment、access_resourcesequipment_assignments(含可空的returned_at)access_grants(含可空的revoked_at)
添加约束以防止脏数据:
- 唯一
asset_tag与serial_number - 外键约束
- 像
returned_at >= assigned_at的检查 - 防止同一设备存在多个未关闭分配的规则
审计轨迹应包含哪些内容,应该如何存储?
审计日志如果事后拼凑通常会失败——把它们当作一等公民数据来设计。
至少记录:
- 访问授权/撤销
- 角色/权限变更
- 设备分配/归还
每条事件应包含执行者、变更内容(之前 → 之后)、时间戳,以及可用时的理由。倾向于追加式记录和软删除以满足合规保留需求。
有哪些 API 设计可以防止在分配和归还时出现棘手的边缘情况?
把校验和冲突处理放在 API 层,这样 UI 无法创建不一致的记录。
关键做法:
- 每次写入都校验(例如:不能分配已被分配的设备)
- 使用稳定的错误码(401/403/404/409/422)
- 对关键操作(分配/归还)实现幂等性(防止重试导致重复)
- 列表接口从一开始就支持分页/排序
我们应该立即实现 SSO,还是先用邮箱/密码?
如果你们已有 IdP(Okta/Azure AD/Google Workspace),优先集成 SSO,因为离职后禁用 IdP 帐号会在一个控制点切断所有访问。
若无法使用 SSO,则采用邮箱+密码并辅以 MFA(TOTP 或 WebAuthn),同时:
- 做速率限制与锁定阈值
- 管理短期会话
- 使用安全 Cookie(
HttpOnly、Secure、SameSite)
无论认证方式如何,RBAC 都应保存在数据库并在服务端强制执行。
什么时候应该加入条码/二维码扫描和外部集成?有哪些陷阱?
在核心流程稳定后再加入扫描功能;它是高回报的“升级项”,但不是首发必需。
让扫描成功的要点:
- 打印耐用标签,并在码下方保留可读 ID
- 支持相机扫描(移动端)和 USB 扫描器(桌面)
- 建议编码内部 ID 而非序列号(序列号格式可能千差万别)
对于集成(HRIS/IdP/工单),先做只读导入并在允许写入前明确每个字段的数据源。