using Dpz.Core.Entity.Base;
namespace Dpz.Core.Public.Entity;
public class User : IBaseEntity
{
/// <summary>
/// 账号
/// </summary>
public required string Id { get; set; }
/// <summary>
/// 昵称
/// </summary>
public required string Name { get; set; }
/// <summary>
/// 密码
/// </summary>
public required string Password { get; set; }
/// <summary>
/// 是否启用
/// </summary>
public bool? Enable { get; set; }
/// <summary>
/// /签名
/// </summary>
public string? Sign { get; set; }
/// <summary>
/// 头像
/// </summary>
public required string Avatar { get; set; }
/// <summary>
/// 性别
/// </summary>
public Sex Sex { get; set; }
/// <summary>
/// key
/// </summary>
public required string Key { get; set; }
/// <summary>
/// 权限
/// </summary>
public Permissions? Permissions { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 最后修改时间
/// </summary>
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime? LastUpdateTime { get; set; }
public UserInfo GetUserInfo()
{
return new UserInfo
{
Id = Id,
Name = Name,
Sign = Sign,
Sex = Sex,
Avatar = string.IsNullOrEmpty(Avatar) ? "/images/guest.png" : Avatar,
Permissions = Permissions,
Enable = Enable,
Key = Key,
};
}
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
这段代码定义了一个表示“用户”的实体类 User(位于 Dpz.Core.Public.Entity 命名空间),用于在程序中保存用户的账号 / 个人信息并提供一个转换为对外展示用 DTO 的方法。下面逐项说明其功能和关键点:
总体
- 类名:User, 实现了 IBaseEntity(可能是项目中所有实体共有接口,未在片段中给出具体成员)。
- 用途:作为用户数据模型,包含账号、昵称、密码、头像、权限、时间戳等字段,并提供 GetUserInfo 方法将敏感字段过滤后返回给外部代码或前端。
属性说明
- required string Id { get; set; }:账号(必填)。C# 11 的 required 修饰符表示初始化时必须赋值。
- required string Name { get; set; }:昵称(必填)。
- required string Password { get; set; }:密码(必填)。注意这里是明文字段,实际应用应存储哈希值并注意序列化/传输安全。
- bool? Enable { get; set; }:是否启用,nullable 表示可能为 null(未设置)。
- string? Sign { get; set; }:签名,可空。
- required string Avatar { get; set; }:头像地址(必填)。
- Sex Sex { get; set; }:性别,Sex 很可能是枚举类型(未在片段中定义)。
- required string Key { get; set; }:key(可能是 API key、用户唯一码等,必填)。
- Permissions? Permissions { get; set; }:权限信息,可空,Permissions 可能是枚举或复合类型(角色/权限集合)。
- DateTime? CreateTime / LastUpdateTime:创建与最后修改时间,两个属性上都加了 [BsonDateTimeOptions(Kind = DateTimeKind.Local)],这是 MongoDB.Bson 的属性,用来在序列化到 MongoDB BSON 时指定 DateTime 的 Kind(本例指定为本地时间)。
GetUserInfo 方法
- 返回一个 UserInfo 对象(未给出定义),用于把用户实体转换为对外展示的用户信息。
- 该方法没有把 Password 包含在内(这点很重要),避免泄露密码。
- 对 Avatar 做了默认值处理:如果 Avatar 为空或 null,返回 "/images/guest.png"。
- 返回字段包括 Id、Name、Sign、Sex、Avatar、Permissions、Enable、Key(注意 Key 被包含,视业务可能需要谨慎)。
其他要点与建议
- required 修饰符确保对象初始化时关键字段不会被遗漏。
- BsonDateTimeOptions 用于 MongoDB 存储时的时间类型处理,保证以本地时间存储/读取。
- 安全性:Password 字段应存储为哈希值,避免明文保存;在序列化(JSON/BSON)或对外返回时应尽量忽略该字段(例如使用 [JsonIgnore] / [BsonIgnore] 或在 DTO 中不包含)。
- 如果 Key 是敏感信息(如 API key / token),在对外暴露时也要谨慎处理。
总结 这个类是一个完整的用户实体模型,包含用户身份、资料、权限与时间信息,并提供了一个将实体转换为对外安全展示对象的便捷方法(GetUserInfo),同时通过属性和注解支持与 MongoDB 的序列化行为。
评论加载中...