feat 获取新token

This commit is contained in:
cheche
2024-01-15 12:57:47 +08:00
parent 5b818c8e10
commit de74bc6868
3 changed files with 50 additions and 0 deletions

View File

@@ -51,4 +51,14 @@ public class AssignmentsController : ControllerBase
{
await _assignmentService.UpdateDeviceTaskStatusAsync(request);
}
/// <summary>
/// 获取新token
/// </summary>
/// <param name="taskId"></param>
/// <returns></returns>
[HttpGet("token")]
public async Task<string> Token(long taskId)
{
return await _assignmentService.Token(taskId);
}
}

View File

@@ -19,4 +19,11 @@ public interface IAssignmentService : IScopeDependency
/// <param name="request"></param>
/// <returns></returns>
Task UpdateDeviceTaskStatusAsync(UpdateDeviceTaskStatusRequest request);
/// <summary>
/// 获取新token
/// </summary>
/// <param name="taskId"></param>
/// <returns></returns>
Task<string> Token(long taskId);
}

View File

@@ -152,6 +152,39 @@ public class AssignmentService : IAssignmentService
}).ToList();
});
}
/// <summary>
/// 获取新token
/// </summary>
/// <param name="taskId"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<string> Token(long taskId)
{
var task = await _dbContext.Queryable<DeviceTaskEntity>().Where(x => x.Id == taskId).FirstAsync();
task.ThrowIfNull("该任务不存在");
if (task.Status != DeviceTaskStatusEnumType.Success)
{
return "";
}
string newtoken="";
Scoped.Request.Value.Create((sp) =>
{
FaceUrlOptions faceUrlOptions = sp.GetService<IOptions<FaceUrlOptions>>().Value;
var dataProtectionProvider = sp.GetService<IDataProtectionProvider>();
var timeLimitedDataProtector = dataProtectionProvider
.CreateProtector("down:face")
.ToTimeLimitedDataProtector();
var userCode = task.UserCode;
var key = $"face:{userCode}";
var token = timeLimitedDataProtector.Protect(key, TimeSpan.FromSeconds(faceUrlOptions.Limit));
newtoken = faceUrlOptions.Url + token;
});
return newtoken;
}
public async Task UpdateDeviceTaskStatusAsync(UpdateDeviceTaskStatusRequest request)