从List 在ASP.NET Web API中获取项目

问题描述 投票:0回答:1

我正在登录时创建索赔清单:

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();

我该如何实现?

c# asp.net-core asp.net-web-api claims
1个回答
0
投票
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();

© www.soinside.com 2019 - 2024. All rights reserved.