// ============================================================================
// 【文件说明】SecureDocumentRequest.cs - 安全文档访问请求 DTO
// ============================================================================
// 这是访问受保护文档的请求数据结构。
//
// 【业务背景】
// 某些文档需要密码保护:
// - 机密文档:需要输入密码才能查看
// - 内部文档:限制访问权限
// - 临时分享:设置访问密码
//
// 【安全设计】
// - 不直接在 URL 中传递密码(会被日志记录)
// - 通过请求体传递密码
// - 服务端验证密码后返回文档内容
//
// 【与 Java Spring Boot 的对比】
// Java 通常用 @RequestBody 接收:
// @PostMapping("/secure-document")
// public Result access(@RequestBody SecureDocumentRequest request) {
// ...
// }
//
// C# 在 Admin.NET 中直接用参数接收,框架自动绑定。
// ============================================================================
namespace Admin.NET.Plugin.HwPortal;
///
/// 安全文档访问请求。
///
/// 【业务场景】
/// 用户访问受密码保护的文档时:
/// 1. 前端弹出密码输入框
/// 2. 用户输入密码
/// 3. 前端发送此请求
/// 4. 服务端验证密码,返回文档内容
///
///
/// 【安全说明】
/// - 密码不存储在前端
/// - 每次访问都需要验证
/// - 密码错误返回 403 错误
///
///
public class SecureDocumentRequest
{
///
/// 文档 ID。
///
/// 【业务说明】
/// 要访问的文档的唯一标识。
/// 用于查询文档信息和验证密码。
///
///
public string DocumentId { get; set; }
///
/// 用户提供的密码。
///
/// 【业务说明】
/// 用户输入的访问密码。
/// 与文档存储的密码进行比对。
///
///
/// 【安全最佳实践】
/// - 密码不明文存储,存储哈希值
/// - 传输使用 HTTPS 加密
/// - 验证失败不返回具体错误原因
///
///
/// 【C# 语法知识点 - 字符串属性】
/// string 是 C# 的字符串类型:
/// - 引用类型,但不可变
/// - 对比 Java:Java 的 String 也是不可变引用类型
///
/// 为什么用 string 而不是 SecureString?
/// - SecureString 是安全字符串,但使用复杂
/// - 对于 Web API,HTTPS 已加密传输
/// - string 更简单,适合大多数场景
///
///
public string ProvidedKey { get; set; }
}