From d389dcbedf93fff9816fa776a82f18ab69bd351b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B7=B3?= <454313500@qq.com> Date: Mon, 22 Apr 2024 18:06:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=80=BC=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/System/UserService.cs | 2 +- .../Entities/UserEntity.cs | 39 +++++++++++-------- .../ValueObjects/EncryPasswordValueObject.cs | 28 +++++++++++++ .../Managers/AccountManager.cs | 6 +-- .../Managers/UserManager.cs | 4 +- 5 files changed, 57 insertions(+), 22 deletions(-) create mode 100644 Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/ValueObjects/EncryPasswordValueObject.cs diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/System/UserService.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/System/UserService.cs index ca822d31..fced9661 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/System/UserService.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/System/UserService.cs @@ -152,7 +152,7 @@ namespace Yi.Framework.Rbac.Application.Services.System //更新密码,特殊处理 if (input.Password is not null) { - entity.Password = input.Password; + entity.EncryPassword.Password = input.Password; entity.BuildPassword(); } await MapToEntityAsync(input, entity); diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/UserEntity.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/UserEntity.cs index 4925273f..fde5de33 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/UserEntity.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/UserEntity.cs @@ -4,6 +4,7 @@ using Volo.Abp.Auditing; using Volo.Abp.Domain.Entities; using Yi.Framework.Core.Data; using Yi.Framework.Core.Helper; +using Yi.Framework.Rbac.Domain.Entities.ValueObjects; using Yi.Framework.Rbac.Domain.Shared.Enums; namespace Yi.Framework.Rbac.Domain.Entities @@ -22,7 +23,7 @@ namespace Yi.Framework.Rbac.Domain.Entities public UserEntity(string userName, string password, long phone, string nick = "萌新") { UserName = userName; - Password = password; + EncryPassword.Password = password; Phone = phone; Nick = nick; BuildPassword(); @@ -55,14 +56,20 @@ namespace Yi.Framework.Rbac.Domain.Entities public string UserName { get; set; } = string.Empty; /// - /// 密码 + /// 加密密码 /// - public string Password { get; set; } = string.Empty; + [SugarColumn(IsOwnsOne = true)] + public EncryPasswordValueObject EncryPassword { get; set; }=new EncryPasswordValueObject(); - /// - /// 加密盐值 - /// - public string Salt { get; set; } = string.Empty; + ///// + ///// 密码 + ///// + //public string Password { get; set; } = string.Empty; + + ///// + ///// 加密盐值 + ///// + //public string Salt { get; set; } = string.Empty; /// /// 头像 @@ -175,14 +182,14 @@ namespace Yi.Framework.Rbac.Domain.Entities //如果不传值,那就把自己的password当作传进来的password if (password == null) { - if (Password == null) + if (EncryPassword.Password == null) { - throw new ArgumentNullException(nameof(Password)); + throw new ArgumentNullException(nameof(EncryPassword.Password)); } - password = Password; + password = EncryPassword.Password; } - Salt = MD5Helper.GenerateSalt(); - Password = MD5Helper.SHA2Encode(password, Salt); + EncryPassword.Salt = MD5Helper.GenerateSalt(); + EncryPassword.Password = MD5Helper.SHA2Encode(password, EncryPassword.Salt); return this; } @@ -193,12 +200,12 @@ namespace Yi.Framework.Rbac.Domain.Entities /// public bool JudgePassword(string password) { - if (Salt is null) + if (EncryPassword.Salt is null) { - throw new ArgumentNullException(Salt); + throw new ArgumentNullException(EncryPassword.Salt); } - var p = MD5Helper.SHA2Encode(password, Salt); - if (Password == MD5Helper.SHA2Encode(password, Salt)) + var p = MD5Helper.SHA2Encode(password, EncryPassword.Salt); + if (EncryPassword.Password == MD5Helper.SHA2Encode(password, EncryPassword.Salt)) { return true; } diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/ValueObjects/EncryPasswordValueObject.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/ValueObjects/EncryPasswordValueObject.cs new file mode 100644 index 00000000..6c269ba2 --- /dev/null +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/ValueObjects/EncryPasswordValueObject.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Domain.Values; + +namespace Yi.Framework.Rbac.Domain.Entities.ValueObjects +{ + public class EncryPasswordValueObject : ValueObject + { + /// + /// 密码 + /// + public string Password { get; set; } = string.Empty; + + /// + /// 加密盐值 + /// + public string Salt { get; set; } = string.Empty; + + protected override IEnumerable GetAtomicValues() + { + yield return Password; + yield return Salt; + } + } +} diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Managers/AccountManager.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Managers/AccountManager.cs index 8a460e31..b326282e 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Managers/AccountManager.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Managers/AccountManager.cs @@ -154,7 +154,7 @@ namespace Yi.Framework.Rbac.Domain.Managers { userAction.Invoke(user); } - if (user.Password == MD5Helper.SHA2Encode(password, user.Salt)) + if (user.EncryPassword.Password == MD5Helper.SHA2Encode(password, user.EncryPassword.Salt)) { return; } @@ -247,7 +247,7 @@ namespace Yi.Framework.Rbac.Domain.Managers { throw new UserFriendlyException("无效更新!原密码错误!"); } - user.Password = newPassword; + user.EncryPassword.Password = newPassword; user.BuildPassword(); await _repository.UpdateAsync(user); } @@ -262,7 +262,7 @@ namespace Yi.Framework.Rbac.Domain.Managers { var user = await _repository.GetByIdAsync(userId); // EntityHelper.TrySetId(user, () => GuidGenerator.Create(), true); - user.Password = password; + user.EncryPassword.Password = password; user.BuildPassword(); return await _repository.UpdateAsync(user); } diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Managers/UserManager.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Managers/UserManager.cs index 7c5edc0f..90f8b363 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Managers/UserManager.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Managers/UserManager.cs @@ -152,8 +152,8 @@ namespace Yi.Framework.Rbac.Domain.Managers //{ // throw new UserFriendlyException($"数据错误,用户id:{nameof(userId)} 不存在,请重新登录"); //} - user.Password = string.Empty; - user.Salt = string.Empty; + user.EncryPassword.Password = string.Empty; + user.EncryPassword.Salt = string.Empty; //超级管理员特殊处理 if (UserConst.Admin.Equals(user.UserName))