fix: 修复发授令牌问题
This commit is contained in:
@@ -19,7 +19,7 @@ namespace Yi.Framework.Rbac.Application.EventHandlers
|
|||||||
private readonly ILogger<LoginEventHandler> _logger;
|
private readonly ILogger<LoginEventHandler> _logger;
|
||||||
private readonly IRepository<LoginLogEntity> _loginLogRepository;
|
private readonly IRepository<LoginLogEntity> _loginLogRepository;
|
||||||
public LoginEventHandler(ILogger<LoginEventHandler> logger, IRepository<LoginLogEntity> loginLogRepository) { _logger = logger; _loginLogRepository = loginLogRepository; }
|
public LoginEventHandler(ILogger<LoginEventHandler> logger, IRepository<LoginLogEntity> loginLogRepository) { _logger = logger; _loginLogRepository = loginLogRepository; }
|
||||||
public Task HandleEventAsync(LoginEventArgs eventData)
|
public async Task HandleEventAsync(LoginEventArgs eventData)
|
||||||
{
|
{
|
||||||
_logger.LogInformation($"用户【{eventData.UserId}:{eventData.UserName}】登入系统");
|
_logger.LogInformation($"用户【{eventData.UserId}:{eventData.UserName}】登入系统");
|
||||||
var loginLogEntity = eventData.Adapt<LoginLogEntity>();
|
var loginLogEntity = eventData.Adapt<LoginLogEntity>();
|
||||||
@@ -27,8 +27,7 @@ namespace Yi.Framework.Rbac.Application.EventHandlers
|
|||||||
loginLogEntity.LoginUser = eventData.UserName;
|
loginLogEntity.LoginUser = eventData.UserName;
|
||||||
loginLogEntity.CreatorId = eventData.UserId;
|
loginLogEntity.CreatorId = eventData.UserId;
|
||||||
//异步插入
|
//异步插入
|
||||||
_loginLogRepository.InsertAsync(loginLogEntity);
|
await _loginLogRepository.InsertAsync(loginLogEntity);
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
using Volo.Abp.BackgroundWorkers.Quartz;
|
||||||
|
|
||||||
namespace Yi.Framework.Rbac.Application.Jobs
|
namespace Yi.Framework.Rbac.Application.Jobs
|
||||||
{
|
{
|
||||||
//public class TestJob : QuartzBackgroundWorkerBase
|
//public class BackupDataBaseJob : QuartzBackgroundWorkerBase
|
||||||
//{
|
//{
|
||||||
// public TestJob()
|
// public TestJob()
|
||||||
// {
|
// {
|
||||||
@@ -151,13 +151,13 @@ namespace Yi.Framework.Rbac.Application.Services
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建令牌
|
/// 创建令牌
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="dic"></param>
|
/// <param name="kvs"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private string CreateToken(Dictionary<string, object> dic)
|
private string CreateToken(List<KeyValuePair<string, string>> kvs)
|
||||||
{
|
{
|
||||||
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtOptions.SecurityKey));
|
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtOptions.SecurityKey));
|
||||||
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
|
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(
|
var token = new JwtSecurityToken(
|
||||||
issuer: _jwtOptions.Issuer,
|
issuer: _jwtOptions.Issuer,
|
||||||
audience: _jwtOptions.Audience,
|
audience: _jwtOptions.Audience,
|
||||||
|
|||||||
@@ -73,37 +73,43 @@ namespace Yi.Framework.Rbac.Domain.Managers
|
|||||||
/// <param name="dto"></param>
|
/// <param name="dto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
|
||||||
public Dictionary<string, object> UserInfoToClaim(UserRoleMenuDto dto)
|
public List<KeyValuePair<string, string>> UserInfoToClaim(UserRoleMenuDto dto)
|
||||||
{
|
{
|
||||||
var claims = new Dictionary<string, object>();
|
var claims = new List<KeyValuePair<string, string>>();
|
||||||
claims.Add(AbpClaimTypes.UserId, dto.User.Id);
|
AddToClaim(claims,AbpClaimTypes.UserId, dto.User.Id.ToString());
|
||||||
claims.Add(AbpClaimTypes.UserName, dto.User.UserName);
|
AddToClaim(claims,AbpClaimTypes.UserName, dto.User.UserName);
|
||||||
if (dto.User.DeptId is not null)
|
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)
|
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)
|
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))
|
if (UserConst.Admin.Equals(dto.User.UserName))
|
||||||
{
|
{
|
||||||
claims.Add(TokenTypeConst.Permission, UserConst.AdminPermissionCode);
|
AddToClaim(claims,TokenTypeConst.Permission, UserConst.AdminPermissionCode);
|
||||||
claims.Add(TokenTypeConst.Roles, UserConst.AdminRolesCode);
|
AddToClaim(claims,TokenTypeConst.Roles, UserConst.AdminRolesCode);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
claims.Add(TokenTypeConst.Permission, dto.PermissionCodes.Where(x => !string.IsNullOrEmpty(x)));
|
dto.PermissionCodes?.ForEach(per => AddToClaim(claims, TokenTypeConst.Permission, per));
|
||||||
claims.Add(AbpClaimTypes.Role, dto.RoleCodes.Where(x => !string.IsNullOrEmpty(x)));
|
dto.RoleCodes?.ForEach(role => AddToClaim(claims, AbpClaimTypes.Role, role));
|
||||||
}
|
}
|
||||||
|
|
||||||
return claims;
|
return claims;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void AddToClaim(List<KeyValuePair<string, string>> claims, string key, string value)
|
||||||
|
{
|
||||||
|
claims.Add(new KeyValuePair<string, string>(key, value));
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 更新密码
|
/// 更新密码
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
20
Yi.Abp.Net8/src/Yi.Abp.Application/Jobs/TestJob.cs
Normal file
20
Yi.Abp.Net8/src/Yi.Abp.Application/Jobs/TestJob.cs
Normal file
@@ -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<TestJob>().WithIdentity(nameof(TestJob)).Build();
|
||||||
|
Trigger = TriggerBuilder.Create().WithIdentity(nameof(TestJob)).WithCronSchedule("* * * * * ? *").Build();
|
||||||
|
}
|
||||||
|
public override Task Execute(IJobExecutionContext context)
|
||||||
|
{
|
||||||
|
//定时任务,非常简单
|
||||||
|
//Console.WriteLine("你好,世界");
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user