簡體   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