我正在登录时创建索赔清单:
var claims = new List<Claim>
{
new Claim(JwtRegisteredClaimNames.Sub, user.UserName),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
new Claim("Testing", "test")
};
没有对Login方法的授权,因此尚未保存声明或未创建cookie,但是列表包含已创建的userId,我想将其保存在活动日志(表)中:
var activityLog = new AccessLogEntity
{
ActivityDate = DateTime.UtcNow,
UserId = ## get from claims (List<Claim>
};
await _context.tbl_ActivityLogs.AddAsync(activityLog);
await _context.SaveChangesAsync();
我该如何实现?
var claims = new List<Claim>
{
new Claim(JwtRegisteredClaimNames.Sub, /* -----> */ user.UserName /*<------ this one here */ ) ,
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
new Claim("Testing", /* -----> */"test"/* <----- Or this */)
};
您可以轻松地做到这一点
claims[0 /* Or whichever you want to get*/].Value;
完整代码
var activityLog = new AccessLogEntity
{
ActivityDate = DateTime.UtcNow,
UserId = claims[i /*Or whatever*/].Value;
};
await _context.tbl_ActivityLogs.AddAsync(activityLog);
await _context.SaveChangesAsync();