ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Dorisoy.Pan 权限与安全体系深度解析:JWT 认证 + 角色权限 + 登录审计

Dorisoy.Pan 权限与安全体系深度解析:JWT 认证 + 角色权限 + 登录审计 Dorisoy.Pan 权限与安全体系深度解析JWT 认证 角色权限 登录审计【免费下载链接】Dorisoy.PanDorisoy.Pan 是基于 .NET 10 的跨平台文档管理系统使用 MS SQL 2012 / MySQL 8.0或更高版本后端数据库您可以在 Windows、Linux 或 Mac 上运行它。项目中的所有方法都是异步的支持 JWT 令牌身份验证项目体系结构遵循 CQRS MediatR 模式和最佳安全实践。源代码完全可定制热插拔且清晰的体系结构使开发定制功能和遵循任何业务需求变得容易。项目地址: https://gitcode.com/gh_mirrors/do/Dorisoy.PanDorisoy.Pan 是一款基于 .NET 10 的跨平台文档管理系统它的权限与安全体系是整款软件的基石JWT 认证负责「确认你是谁」**角色权限RBAC**负责「你能做什么」登录审计则负责「谁在什么时候登录过」。这套组合拳让 Dorisoy.Pan 在企业文档管理中既灵活又安全。本文将从源码层面逐层拆解这套权限与安全体系帮助你快速理解它的认证流程、权限模型与审计机制无论你是想部署使用还是二次开发定制都能从中受益。Dorisoy.Pan 安全体系总览三层防护如何协同工作很多文档管理系统只做简单的「登录 管理员」两层控制而 Dorisoy.Pan 把安全拆成了三个可独立扩展的层次认证层Authentication基于 JWTJSON Web Token的无状态令牌认证用户登录成功后获得一个带签名的令牌后续每次请求携带令牌即可无需在服务器保存会话。授权层Authorization采用 RBAC基于角色的访问控制模型通过「用户 → 角色 → 权限声明Claim」三层结构实现文件上传、下载、删除、分享等细粒度权限控制。审计层Audit每次登录尝试无论成功或失败都会被记录到LoginAudit表包含登录 IP、时间、状态甚至经纬度让安全问题有据可查。Dorisoy.Pan JWT 认证机制深度解析令牌签发与校验的完整流程JWT 认证是 Dorisoy.Pan 安全体系的第一个关卡它的完整链路可以从两个阶段来看签发令牌与校验令牌。第一步登录接口如何签发 JWT 令牌登录入口在UserController的UserLogin方法它被标记为[AllowAnonymous]匿名可访问用户提交用户名、密码后系统通过 ASP.NET Core Identity 的PasswordSignInAsync校验密码校验通过后再检查账号是否IsActive启用状态。真正生成令牌的逻辑在 UserRepository.cs 的BuildJwtToken方法中使用HMAC-SHA256 对称加密签名密钥来自配置项JwtSettings.Key令牌中携带sub用户 ID和Email等声明Claims以及角色权限声明设置Issuer签发方、Audience受众和过期时间MinutesToExpiration分钟过期后令牌自动失效。第二步每个请求如何校验 JWT 令牌校验逻辑集中在 JwtConfigurationExtension.cs 中服务启动时注册 JWT Bearer 认证并配置TokenValidationParametersValidateIssuerSigningKey true校验令牌签名密钥防止伪造令牌ValidateIssuer/ValidateAudience校验签发方与受众是否匹配ValidateLifetime true校验有效期并配合ClockSkew处理时钟偏差。当令牌通过校验后OnTokenValidated事件会把用户 ID 和 Email 写入请求上下文的UserInfoToken中后续控制器可以直接读取当前登录用户信息。此外还有 JwtMiddleware.cs 作为中间件兜底解析令牌。Dorisoy.Pan 角色权限RBAC体系从角色到细粒度权限声明有了认证还不够Dorisoy.Pan 的授权层采用标准 RBAC 模型实体定义在 Server/Dorisoy.Pan.Data/Entities 目录下实体作用关键字段User.cs用户继承IdentityUserGuidIsActive、IsAdmin、ProviderRole.cs角色继承IdentityRoleGuidDescription、IsSystemUserRole.cs用户-角色关联表User、RoleRoleClaim.cs角色绑定的权限声明ClaimValue、Group、Description细粒度权限声明都有哪些系统预置了一批业务级权限声明Claims每个声明对应一个操作能力例如IsFolderCreate创建文件夹IsFileUpload上传文件IsDeleteFileFolder删除文件或文件夹IsDownloadFile下载文件IsCopyFile/IsCopyFolder/IsMoveFile复制、移动IsSharedFileFolder/IsSharedLink文件共享与分享链接IsRenameFile重命名文件IsSendEmail发送邮件这些声明在登录成功后会被加载进 JWT 令牌见BuildUserAuthObject客户端拿到令牌即可知道当前用户的全部权限。控制器如何做权限拦截服务端所有业务控制器都标注了[Authorize]必须登录例如 UserController.cs只有登录、分享链接访问等少数接口使用[AllowAnonymous]放行。通过「控制器级别授权 令牌内权限声明 业务代码二次校验」的组合实现了文档管理系统的多级权限控制。Dorisoy.Pan 登录审计机制每一次登录尝试都有迹可循安全体系里最容易被忽略、却最能「事后追责」的就是审计。Dorisoy.Pan 把登录审计做成了独立的一等公民。审计数据记录什么LoginAudit.cs 定义了审计记录结构UserName尝试登录的用户名LoginTime登录时间RemoteIP远程 IP 地址Status登录状态Success/ErrorLatitude/Longitude登录时的经纬度可用于异常登录地理位置告警Provider登录提供方本地账号或第三方。审计记录写在哪里核心逻辑在 UserLoginCommandHandler.cs无论登录成功还是失败都会先写入一条审计记录失败时记录Status Error成功后更新为Success。这意味着暴力破解尝试、异地登录、异常时段登录都会被完整记录下来。如何查看登录审计日志管理端通过 LoginAuditController.cs 的GetLoginAudit接口分页查询审计日志配合 LoginAuditRepository.cs 支持按用户名、状态、时间范围筛选管理员可以快速定位异常登录行为。客户端的安全管理界面权限配置一目了然安全体系不仅体现在服务端Dorisoy.Pan 的 Avalonia 跨平台客户端同样提供了完整的管理界面PermissionPageViewModel.cs权限管理页可视化配置角色拥有的权限声明RolePageViewModel.cs角色管理页创建角色并分配权限UserPageViewModel.cs用户管理页管理用户状态与角色绑定LoginViewModel.cs登录页负责提交凭据并保存 JWT 令牌。整个客户端与服务端通过 Refit 封装异步通信每次请求自动携带 JWT 令牌配合MakeRequest统一处理 401 未授权场景实现「登录一次、全程通行」的无状态体验。总结Dorisoy.Pan 安全体系带来的启示回顾 Dorisoy.Pan 的权限与安全体系你会发现它遵循了一套非常标准的企业级安全实践JWT 无状态认证降低服务器会话管理压力配合签名、有效期校验保证令牌安全RBAC 三层模型用户-角色-权限声明让权限管理既灵活又可控新增一个业务权限只需添加一条 Claim登录审计让每次访问都有迹可循配合 IP、经纬度等信息形成完整的异常行为检测能力全异步 CQRS/MediatR 架构让安全逻辑与业务逻辑解耦代码可读性与可维护性大幅提升。如果你正在为团队搭建内部文档系统或想学习 .NET 下的认证授权最佳实践Dorisoy.Pan 的这套权限与安全体系是一个非常值得参考的范本——它证明了「安全的文档管理系统」并不是靠堆砌功能而是靠扎实的认证、授权与审计闭环。【免费下载链接】Dorisoy.PanDorisoy.Pan 是基于 .NET 10 的跨平台文档管理系统使用 MS SQL 2012 / MySQL 8.0或更高版本后端数据库您可以在 Windows、Linux 或 Mac 上运行它。项目中的所有方法都是异步的支持 JWT 令牌身份验证项目体系结构遵循 CQRS MediatR 模式和最佳安全实践。源代码完全可定制热插拔且清晰的体系结构使开发定制功能和遵循任何业务需求变得容易。项目地址: https://gitcode.com/gh_mirrors/do/Dorisoy.Pan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表