网站首页 网站源码
website
站点相关全部源代码,隐藏了一些关于服务器的信息
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();
    }
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

这段代码定义了一个 User 类,表示用户实体,包含了用户的基本信息和一些功能方法。以下是对代码的详细解释:

类和属性

  1. 类定义:

    • User 类实现了 IBaseEntity 接口,表明它是一个基础实体。
  2. 属性:

    • Id: 用户的账号(唯一标识符)。
    • Name: 用户的昵称。
    • Password: 用户的密码(通常需要加密存储)。
    • Enable: 一个可选的布尔值,表示用户是否启用。
    • Sign: 用户的签名。
    • Avatar: 用户的头像 URL。
    • Sex: 用户的性别,类型为 Sex(假设是一个枚举)。
    • Key: 用户的密钥(可能用于身份验证或其他目的)。
    • Permissions: 用户的权限,类型为 Permissions(假设是一个枚举或类)。
    • CreateTime: 用户创建时间,使用 BSON 日期时间选项,表示为本地时间。
    • LastUpdateTime: 用户最后修改时间,同样使用 BSON 日期时间选项。

方法

  1. GetUserInfo:

    • 该方法返回一个 UserInfo 对象,包含用户的基本信息。它会将 Avatar 属性的值设置为默认值("/images/guest.png"),如果 Avatar 为空。
  2. GenerateKey:

    • 该方法生成一个基于用户 IdPassword 的 SHA-256 哈希值,并将其格式化为字符串。
    • 具体步骤:
      • IdPassword 组合成一个字符串,并附加一个固定的字符串 "by-dpangzi"
      • 将组合后的字符串转换为 UTF-8 字节数组。
      • 使用 SHA-256 算法计算该字节数组的哈希值。
      • 将哈希值转换为十六进制字符串,并每四个字符插入一个连字符(-),以便于阅读。

总结

这个 User 类是一个用户管理的基础模型,包含了用户的基本信息和一些功能方法,如获取用户信息和生成密钥。它可以用于用户注册、登录、权限管理等功能。需要注意的是,密码的存储和处理应遵循安全最佳实践,例如使用哈希和盐值来保护用户密码。

loading