繁体   English   中英

将自定义声明放入安全令牌中,并在ASP.NET Web API中创建

[英]Put custom claims into security token and create it in ASP.NET Web API

是否可以采用一些自定义的Claims,例如:

查找具有给定PIN码和Device_Id的用户,获取该用户的值并将其放入声明中。

CredentialsDb dbctx = new CredentialsDb();
var usr = dbctx.Credentials.Where(u => u.PIN == model.PIN && u.Device_Id == model.Device_Id).SingleOrDefault();

var identity = new ClaimsIdentity();
identity.AddClaim(new Claim("UserName", usr.UserName));
identity.AddClaim(new Claim("Device_Id", usr.Device_Id));
identity.AddClaim(new Claim("Device_Name", usr.Device_Name));
identity.AddClaim(new Claim("PIN", usr.PIN.ToString()));

并从中创建安全令牌? 如果我们不使用某些STS,那么如何构建此令牌?客户端以后如何使用它? 任何人都有一些想法或好的教程可以分享吗?

这就是我在Web api应用程序中所做的工作,在该应用程序中,我想从数据库中获取用户的所有角色,并将这些角色一个接一个地添加到我的Identity声明中:

获取用户:

IdentityUser user = new ApplicationDbContext().Users.Where([your conditions here...]).FirstOrDefault();

创建身份:

var id = new ClaimsIdentity(context.Options.AuthenticationType);

并使用循环将角色添加到该身份声明中:

foreach (IdentityUserRole R in user.Roles)
            {
                id.AddClaim(new Claim(ClaimTypes.Role, RolesProvider.RoleNameById(R.RoleId)));
            }

当然,您可以使用类似的逻辑来添加您获得的有关该特定用户的任何类型的信息。 这是否回答了您的问题?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM