新增MES模块,包含供应商、客户、车辆和地磅数据记录管理功能,支持免密接口和数据同步。更新相关控制器、实体、服务和数据库配置,优化权限管理和数据字典支持,确保系统的灵活性和可扩展性。
This commit is contained in:
@@ -15,13 +15,6 @@ namespace YY.Admin.Services.Service.Auth
|
||||
{
|
||||
public class SysAuthService : ISysAuthService, ISingletonDependency
|
||||
{
|
||||
/// <summary>
|
||||
///token过期时间(分)
|
||||
/// </summary>
|
||||
//private const int _refreshExpires = 30;
|
||||
// token过期剩余时间(分)
|
||||
private readonly TimeSpan _idleTimeout = TimeSpan.FromMinutes(20);
|
||||
|
||||
private SysUser? _currentUser;
|
||||
public SysUser? CurrentUser => _currentUser;
|
||||
public event EventHandler<SysUser?>? UserChanged;
|
||||
@@ -2324,7 +2317,25 @@ namespace YY.Admin.Services.Service.Auth
|
||||
|
||||
private async Task<int> getSysTokenExpireAsync()
|
||||
{
|
||||
return await _sysConfigService.GetConfigValue<int>(ConfigConst.SysTokenExpire);
|
||||
var v = await _sysConfigService.GetConfigValue<int>(ConfigConst.SysTokenExpire);
|
||||
return v > 0 ? v : 30;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 用户操作时续期阈值(分钟),默认 20
|
||||
/// </summary>
|
||||
private async Task<int> getSysTokenIdleExtendMinutesAsync()
|
||||
{
|
||||
var v = await _sysConfigService.GetConfigValue<int>(ConfigConst.SysTokenIdleExtendMinutes);
|
||||
return v > 0 ? v : 20;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否开启永不过期
|
||||
/// </summary>
|
||||
private async Task<bool> getSysTokenNeverExpireAsync()
|
||||
{
|
||||
return await _sysConfigService.GetConfigValue<bool>(ConfigConst.SysTokenNeverExpire);
|
||||
}
|
||||
|
||||
|
||||
@@ -2338,8 +2349,9 @@ namespace YY.Admin.Services.Service.Auth
|
||||
// 生成访问令牌(实际项目应使用JWT)
|
||||
var accessToken = GenerateSecureToken(32);
|
||||
var refreshToken = GenerateSecureToken(32);
|
||||
var neverExpire = await getSysTokenNeverExpireAsync();
|
||||
var refreshExpires = await getSysTokenExpireAsync();
|
||||
var refreshExpiration = DateTime.Now.AddMinutes(refreshExpires);
|
||||
var refreshExpiration = neverExpire ? DateTime.MaxValue : DateTime.Now.AddMinutes(refreshExpires);
|
||||
// 存储Token关联信息
|
||||
_tokenStore[accessToken] = new UserContext
|
||||
{
|
||||
@@ -2380,6 +2392,9 @@ namespace YY.Admin.Services.Service.Auth
|
||||
if (string.IsNullOrEmpty(accessToken))
|
||||
return false;
|
||||
|
||||
if (getSysTokenNeverExpireAsync().GetAwaiter().GetResult())
|
||||
return _tokenStore.ContainsKey(accessToken);
|
||||
|
||||
return _tokenStore.TryGetValue(accessToken, out var tokenInfo) &&
|
||||
tokenInfo.Token.RefreshExpires >= DateTime.Now;
|
||||
}
|
||||
@@ -2388,9 +2403,13 @@ namespace YY.Admin.Services.Service.Auth
|
||||
{
|
||||
if (string.IsNullOrEmpty(accessToken))
|
||||
return;
|
||||
if (await getSysTokenNeverExpireAsync())
|
||||
return;
|
||||
if (_tokenStore.TryGetValue(accessToken, out var tokenInfo))
|
||||
{
|
||||
if (tokenInfo.Token.RefreshExpires - DateTime.Now <= _idleTimeout)
|
||||
var idleMin = await getSysTokenIdleExtendMinutesAsync();
|
||||
var idleSpan = TimeSpan.FromMinutes(idleMin);
|
||||
if (tokenInfo.Token.RefreshExpires - DateTime.Now <= idleSpan)
|
||||
{
|
||||
var refreshExpires = await getSysTokenExpireAsync();
|
||||
tokenInfo.Token.RefreshExpires = DateTime.Now.AddMinutes(refreshExpires);
|
||||
@@ -2430,6 +2449,7 @@ namespace YY.Admin.Services.Service.Auth
|
||||
_tokenStore.TryRemove(accessToken, out _);
|
||||
|
||||
var refreshExpires = await getSysTokenExpireAsync();
|
||||
var neverExpire = await getSysTokenNeverExpireAsync();
|
||||
_tokenStore[newToken] = new UserContext
|
||||
{
|
||||
UserId = user.Id,
|
||||
@@ -2442,7 +2462,7 @@ namespace YY.Admin.Services.Service.Auth
|
||||
Token = new UserToken()
|
||||
{
|
||||
RefreshToken = refreshToken,
|
||||
RefreshExpires = DateTime.Now.AddMinutes(refreshExpires),
|
||||
RefreshExpires = neverExpire ? DateTime.MaxValue : DateTime.Now.AddMinutes(refreshExpires),
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user