🍒 refactor(auth): 给CreateToken增加 是否刷新 入参,防止刷新token时更新用户登陆状态
This commit is contained in:
parent
888a782127
commit
5a96ecd5ac
@ -221,15 +221,16 @@ public class SysAuthService : IDynamicApiController, ITransient
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="user"></param>
|
/// <param name="user"></param>
|
||||||
/// <param name="loginMode"></param>
|
/// <param name="loginMode"></param>
|
||||||
|
/// <param name="isRefresh"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[NonAction]
|
[NonAction]
|
||||||
public async Task<LoginOutput> CreateToken(SysUser user, LoginModeEnum loginMode = LoginModeEnum.PC)
|
public async Task<LoginOutput> CreateToken(SysUser user, LoginModeEnum loginMode = LoginModeEnum.PC, bool isRefresh = false)
|
||||||
{
|
{
|
||||||
// 单用户登录
|
// 单用户登录
|
||||||
await App.GetRequiredService<SysOnlineUserService>().SingleLogin(user.Id, loginMode);
|
await App.GetRequiredService<SysOnlineUserService>().SingleLogin(user.Id, loginMode);
|
||||||
|
|
||||||
// 生成Token令牌
|
// 生成Token令牌
|
||||||
user.TokenVersion += 1;
|
if(!isRefresh) user.TokenVersion += 1;
|
||||||
var tokenExpire = await _sysConfigService.GetTokenExpire();
|
var tokenExpire = await _sysConfigService.GetTokenExpire();
|
||||||
var accessToken = JWTEncryption.Encrypt(new Dictionary<string, object>
|
var accessToken = JWTEncryption.Encrypt(new Dictionary<string, object>
|
||||||
{
|
{
|
||||||
@ -266,6 +267,8 @@ public class SysAuthService : IDynamicApiController, ITransient
|
|||||||
// ke.global.setAllHeader('Authorization', 'Bearer ' + ke.response.headers['access-token']);
|
// ke.global.setAllHeader('Authorization', 'Bearer ' + ke.response.headers['access-token']);
|
||||||
|
|
||||||
// 更新用户登录信息
|
// 更新用户登录信息
|
||||||
|
if (!isRefresh)
|
||||||
|
{
|
||||||
user.LastLoginIp = _httpContextAccessor.HttpContext.GetRemoteIpAddressToIPv4(true);
|
user.LastLoginIp = _httpContextAccessor.HttpContext.GetRemoteIpAddressToIPv4(true);
|
||||||
(user.LastLoginAddress, double? longitude, double? latitude) = CommonHelper.GetIpAddress(user.LastLoginIp);
|
(user.LastLoginAddress, double? longitude, double? latitude) = CommonHelper.GetIpAddress(user.LastLoginIp);
|
||||||
user.LastLoginTime = DateTime.Now;
|
user.LastLoginTime = DateTime.Now;
|
||||||
@ -284,6 +287,7 @@ public class SysAuthService : IDynamicApiController, ITransient
|
|||||||
|
|
||||||
// 发布系统登录事件
|
// 发布系统登录事件
|
||||||
await _eventPublisher.PublishAsync(UserEventTypeEnum.Login, user);
|
await _eventPublisher.PublishAsync(UserEventTypeEnum.Login, user);
|
||||||
|
}
|
||||||
|
|
||||||
return new LoginOutput
|
return new LoginOutput
|
||||||
{
|
{
|
||||||
@ -450,6 +454,6 @@ public class SysAuthService : IDynamicApiController, ITransient
|
|||||||
public async Task RefreshToken(long userId)
|
public async Task RefreshToken(long userId)
|
||||||
{
|
{
|
||||||
var user = await _sysUserRep.AsQueryable().IgnoreTenant().Includes(u => u.SysOrg).FirstAsync(u => u.Id == userId);
|
var user = await _sysUserRep.AsQueryable().IgnoreTenant().Includes(u => u.SysOrg).FirstAsync(u => u.Id == userId);
|
||||||
await CreateToken(user, CommonHelper.IsMobile(_httpContextAccessor.HttpContext?.Request.Headers.UserAgent ?? "") ? LoginModeEnum.APP : LoginModeEnum.PC);
|
await CreateToken(user, CommonHelper.IsMobile(_httpContextAccessor.HttpContext?.Request.Headers.UserAgent ?? "") ? LoginModeEnum.APP : LoginModeEnum.PC, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user