From 8139a9585dc33993ff6555b8501c3cbc7510a25d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B7=B3?= <454313500@qq.com> Date: Fri, 22 Dec 2023 18:11:14 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=8F=91=E6=8E=88?= =?UTF-8?q?=E4=BB=A4=E7=89=8C=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EventHandlers/LoginEventHandler.cs | 5 ++-- .../Jobs/{TestJob.cs => BackupDataBaseJob.cs} | 8 ++++-- .../Services/AccountService.cs | 6 ++-- .../Managers/AccountManager.cs | 28 +++++++++++-------- .../src/Yi.Abp.Application/Jobs/TestJob.cs | 20 +++++++++++++ 5 files changed, 48 insertions(+), 19 deletions(-) rename Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Jobs/{TestJob.cs => BackupDataBaseJob.cs} (75%) create mode 100644 Yi.Abp.Net8/src/Yi.Abp.Application/Jobs/TestJob.cs diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/EventHandlers/LoginEventHandler.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/EventHandlers/LoginEventHandler.cs index 38b6f0a8..6bb5a407 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/EventHandlers/LoginEventHandler.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/EventHandlers/LoginEventHandler.cs @@ -19,7 +19,7 @@ namespace Yi.Framework.Rbac.Application.EventHandlers private readonly ILogger _logger; private readonly IRepository _loginLogRepository; public LoginEventHandler(ILogger logger, IRepository loginLogRepository) { _logger = logger; _loginLogRepository = loginLogRepository; } - public Task HandleEventAsync(LoginEventArgs eventData) + public async Task HandleEventAsync(LoginEventArgs eventData) { _logger.LogInformation($"用户【{eventData.UserId}:{eventData.UserName}】登入系统"); var loginLogEntity = eventData.Adapt(); @@ -27,8 +27,7 @@ namespace Yi.Framework.Rbac.Application.EventHandlers loginLogEntity.LoginUser = eventData.UserName; loginLogEntity.CreatorId = eventData.UserId; //异步插入 - _loginLogRepository.InsertAsync(loginLogEntity); - return Task.CompletedTask; + await _loginLogRepository.InsertAsync(loginLogEntity); } } } diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Jobs/TestJob.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Jobs/BackupDataBaseJob.cs similarity index 75% rename from Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Jobs/TestJob.cs rename to Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Jobs/BackupDataBaseJob.cs index faad168e..ac05fe7e 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Jobs/TestJob.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Jobs/BackupDataBaseJob.cs @@ -1,9 +1,13 @@ -using Quartz; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; using Volo.Abp.BackgroundWorkers.Quartz; namespace Yi.Framework.Rbac.Application.Jobs { - //public class TestJob : QuartzBackgroundWorkerBase + //public class BackupDataBaseJob : QuartzBackgroundWorkerBase //{ // public TestJob() // { diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/AccountService.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/AccountService.cs index 55e98847..83675077 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/AccountService.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/AccountService.cs @@ -151,13 +151,13 @@ namespace Yi.Framework.Rbac.Application.Services /// /// 创建令牌 /// - /// + /// /// - private string CreateToken(Dictionary dic) + private string CreateToken(List> kvs) { var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtOptions.SecurityKey)); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); - var claims = dic.Select(x => new Claim(x.Key, x.Value.ToString())).ToList(); + var claims = kvs.Select(x => new Claim(x.Key, x.Value.ToString())).ToList(); var token = new JwtSecurityToken( issuer: _jwtOptions.Issuer, audience: _jwtOptions.Audience, 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 b3bf4e21..c6c1f63b 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 @@ -73,37 +73,43 @@ namespace Yi.Framework.Rbac.Domain.Managers /// /// - public Dictionary UserInfoToClaim(UserRoleMenuDto dto) + public List> UserInfoToClaim(UserRoleMenuDto dto) { - var claims = new Dictionary(); - claims.Add(AbpClaimTypes.UserId, dto.User.Id); - claims.Add(AbpClaimTypes.UserName, dto.User.UserName); + var claims = new List>(); + AddToClaim(claims,AbpClaimTypes.UserId, dto.User.Id.ToString()); + AddToClaim(claims,AbpClaimTypes.UserName, dto.User.UserName); if (dto.User.DeptId is not null) { - claims.Add(TokenTypeConst.DeptId, dto.User.DeptId); + AddToClaim(claims,TokenTypeConst.DeptId, dto.User.DeptId.ToString()); } if (dto.User.Email is not null) { - claims.Add(AbpClaimTypes.Email, dto.User.Email); + AddToClaim(claims,AbpClaimTypes.Email, dto.User.Email); } if (dto.User.Phone is not null) { - claims.Add(AbpClaimTypes.PhoneNumber, dto.User.Phone); + AddToClaim(claims,AbpClaimTypes.PhoneNumber, dto.User.Phone.ToString()); } if (UserConst.Admin.Equals(dto.User.UserName)) { - claims.Add(TokenTypeConst.Permission, UserConst.AdminPermissionCode); - claims.Add(TokenTypeConst.Roles, UserConst.AdminRolesCode); + AddToClaim(claims,TokenTypeConst.Permission, UserConst.AdminPermissionCode); + AddToClaim(claims,TokenTypeConst.Roles, UserConst.AdminRolesCode); } else { - claims.Add(TokenTypeConst.Permission, dto.PermissionCodes.Where(x => !string.IsNullOrEmpty(x))); - claims.Add(AbpClaimTypes.Role, dto.RoleCodes.Where(x => !string.IsNullOrEmpty(x))); + dto.PermissionCodes?.ForEach(per => AddToClaim(claims, TokenTypeConst.Permission, per)); + dto.RoleCodes?.ForEach(role => AddToClaim(claims, AbpClaimTypes.Role, role)); } return claims; } + + private void AddToClaim(List> claims, string key, string value) + { + claims.Add(new KeyValuePair(key, value)); + } + /// /// 更新密码 /// diff --git a/Yi.Abp.Net8/src/Yi.Abp.Application/Jobs/TestJob.cs b/Yi.Abp.Net8/src/Yi.Abp.Application/Jobs/TestJob.cs new file mode 100644 index 00000000..fe87dcef --- /dev/null +++ b/Yi.Abp.Net8/src/Yi.Abp.Application/Jobs/TestJob.cs @@ -0,0 +1,20 @@ +using Quartz; +using Volo.Abp.BackgroundWorkers.Quartz; + +namespace Yi.Framework.Rbac.Application.Jobs +{ + public class TestJob : QuartzBackgroundWorkerBase + { + public TestJob() + { + JobDetail = JobBuilder.Create().WithIdentity(nameof(TestJob)).Build(); + Trigger = TriggerBuilder.Create().WithIdentity(nameof(TestJob)).WithCronSchedule("* * * * * ? *").Build(); + } + public override Task Execute(IJobExecutionContext context) + { + //定时任务,非常简单 + //Console.WriteLine("你好,世界"); + return Task.CompletedTask; + } + } +}