🌶 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,
OrgType = user.SysOrg?.Type,
OrgLevel = user.SysOrg?.Level,
LoginMode = loginMode,
TokenVersion = user.TokenVersion,
ExtProps = App.GetServices<IUserSessionExtProps>().SelectMany(u => u.GetInitExtProps(user)).ToDictionary(u => u.Key, u => u.Value)
}, TimeSpan.FromMinutes(tokenExpire));
@ -339,16 +340,17 @@ public class SysAuthService : IDynamicApiController, ITransient
};
}
/// <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);
}
///// <summary>
///// 获取刷新Token 🔖
///// </summary>
///// <param name="accessToken"></param>
///// <returns></returns>
//[DisplayName("获取刷新Token")]
//public string GetRefreshToken([FromQuery] string accessToken)
//{
// var refreshTokenExpire = _sysConfigService.GetRefreshTokenExpire().GetAwaiter().GetResult();
// return JWTEncryption.GenerateRefreshToken(accessToken, refreshTokenExpire);
//}
/// <summary>
/// 退出系统 🔖
@ -439,4 +441,15 @@ public class SysAuthService : IDynamicApiController, ITransient
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 "未知";
}
/// <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));
}
}