🌶 feat(auth): 增加登录模式识别逻辑

This commit is contained in:
喵你个汪呀 2025-08-30 00:00:28 +08:00
parent 9aab9022c8
commit 888a782127
2 changed files with 34 additions and 10 deletions

View File

@ -250,6 +250,7 @@ public class SysAuthService : IDynamicApiController, ITransient
OrgName = user.SysOrg?.Name, OrgName = user.SysOrg?.Name,
OrgType = user.SysOrg?.Type, OrgType = user.SysOrg?.Type,
OrgLevel = user.SysOrg?.Level, OrgLevel = user.SysOrg?.Level,
LoginMode = loginMode,
TokenVersion = user.TokenVersion, TokenVersion = user.TokenVersion,
ExtProps = App.GetServices<IUserSessionExtProps>().SelectMany(u => u.GetInitExtProps(user)).ToDictionary(u => u.Key, u => u.Value) ExtProps = App.GetServices<IUserSessionExtProps>().SelectMany(u => u.GetInitExtProps(user)).ToDictionary(u => u.Key, u => u.Value)
}, TimeSpan.FromMinutes(tokenExpire)); }, TimeSpan.FromMinutes(tokenExpire));
@ -339,16 +340,17 @@ public class SysAuthService : IDynamicApiController, ITransient
}; };
} }
/// <summary> ///// <summary>
/// 刷新Token ///// 获取刷新Token 🔖
/// </summary> ///// </summary>
/// <param name="userId"></param> ///// <param name="accessToken"></param>
[NonAction] ///// <returns></returns>
public async Task RefreshToken(long userId) //[DisplayName("获取刷新Token")]
{ //public string GetRefreshToken([FromQuery] string accessToken)
var user = await _sysUserRep.AsQueryable().IgnoreTenant().Includes(u => u.SysOrg).FirstAsync(u => u.Id == userId); //{
await CreateToken(user); // var refreshTokenExpire = _sysConfigService.GetRefreshTokenExpire().GetAwaiter().GetResult();
} // return JWTEncryption.GenerateRefreshToken(accessToken, refreshTokenExpire);
//}
/// <summary> /// <summary>
/// 退出系统 🔖 /// 退出系统 🔖
@ -439,4 +441,15 @@ public class SysAuthService : IDynamicApiController, ITransient
return 401; return 401;
} }
} }
/// <summary>
/// 刷新token
/// </summary>
/// <param name="userId"></param>
[NonAction]
public async Task RefreshToken(long 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);
}
} }

View File

@ -552,4 +552,15 @@ public static class CommonHelper
{ } { }
return "未知"; return "未知";
} }
/// <summary>
/// 判断是否为移动端UA
/// </summary>
/// <param name="userAgent"></param>
/// <returns></returns>
public static bool IsMobile(string userAgent)
{
var mobilePatterns = new []{ "android.*mobile", "iphone", "ipod", "windows phone", "blackberry", "nokia", "mobile", "opera mini", "opera mobi", "palm", "webos", "bb\\d+", "meego" };
return mobilePatterns.Any(pattern => Regex.IsMatch(userAgent, pattern, RegexOptions.IgnoreCase));
}
} }