网站首页 网站源码
using System.Security.Cryptography;
using System.Text;
using Dpz.Core.Infrastructure.Entity;
namespace Dpz.Core.Public.Entity;
public class User : IBaseEntity
{
/// <summary>
/// 账号
/// </summary>
public string Id { get; set; }
/// <summary>
/// 昵称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 密码
/// </summary>
public string Password { get; set; }
/// <summary>
/// 是否启用
/// </summary>
public bool? Enable { get; set; }
/// <summary>
/// /签名
/// </summary>
public string Sign { get; set; }
/// <summary>
/// 头像
/// </summary>
public string Avatar { get; set; }
/// <summary>
/// 性别
/// </summary>
public Sex Sex { get; set; }
/// <summary>
/// key
/// </summary>
public 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
};
}
public string GenerateKey()
{
var sourceKey =
$"{Id}{Password}by-dpangzi";
var buffer = Encoding.UTF8.GetBytes(sourceKey);
var key = new StringBuilder();
using var sha256 = SHA256.Create();
var array = sha256.ComputeHash(buffer);
for (var i = 0; i < array.Length; i++)
{
key.Append($"{array[i]:X2}");
if ((i % 4) == 3 && i != array.Length - 1) key.Append("-");
}
return key.ToString();
}
}
这段代码定义了一个 User
类,表示用户实体,包含了用户的基本信息和一些功能方法。以下是对代码的详细解释:
类定义:
User
类实现了 IBaseEntity
接口,表明它是一个基础实体。属性:
Id
: 用户的账号(唯一标识符)。Name
: 用户的昵称。Password
: 用户的密码(通常需要加密存储)。Enable
: 一个可选的布尔值,表示用户是否启用。Sign
: 用户的签名。Avatar
: 用户的头像 URL。Sex
: 用户的性别,类型为 Sex
(假设是一个枚举)。Key
: 用户的密钥(可能用于身份验证或其他目的)。Permissions
: 用户的权限,类型为 Permissions
(假设是一个枚举或类)。CreateTime
: 用户创建时间,使用 BSON 日期时间选项,表示为本地时间。LastUpdateTime
: 用户最后修改时间,同样使用 BSON 日期时间选项。GetUserInfo:
UserInfo
对象,包含用户的基本信息。它会将 Avatar
属性的值设置为默认值("/images/guest.png"),如果 Avatar
为空。GenerateKey:
Id
和 Password
的 SHA-256 哈希值,并将其格式化为字符串。Id
和 Password
组合成一个字符串,并附加一个固定的字符串 "by-dpangzi"
。-
),以便于阅读。这个 User
类是一个用户管理的基础模型,包含了用户的基本信息和一些功能方法,如获取用户信息和生成密钥。它可以用于用户注册、登录、权限管理等功能。需要注意的是,密码的存储和处理应遵循安全最佳实践,例如使用哈希和盐值来保护用户密码。