如何在ASP.NET标识中添加声明

我正在试图find一个文档或例子,说明如何使用ASP.NET标识向MVC 5中的用户标识添加自定义声明。 示例应该显示在OWIN安全pipe道中插入声明的位置,以及如何使用表单身份validation将它们保存在Cookie中。

也许下面的文章可以帮助:

var claims = new List<Claim>(); claims.Add(new Claim(ClaimTypes.Name, "Brock")); claims.Add(new Claim(ClaimTypes.Email, "brockallen@gmail.com")); var id = new ClaimsIdentity(claims,DefaultAuthenticationTypes.ApplicationCookie); var ctx = Request.GetOwinContext(); var authenticationManager = ctx.Authentication; authenticationManager.SignIn(id); 

假设您正在使用ASP.NET MVC 5项目模板,则添加声明的正确位置位于ApplicationUser.cs 。 只需Add custom user claims heresearchAdd custom user claims here 。 这将引导您到GenerateUserIdentityAsync方法。 这是在ASP.NET Identity系统检索到ApplicationUser对象并需要将其转换为ClaimsIdentity时调用的方法。 你会看到这行代码:

 // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 

之后是评论:

 // Add custom user claims here 

最后,它返回身份:

 return userIdentity; 

因此,如果您想添加自定义声明,那么您的GenerateUserIdentityAsync可能如下所示:

 // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); // Add custom user claims here userIdentity.AddClaim(new Claim("myCustomClaim", "value of claim")); return userIdentity; 

如果你想在注册时添加自定义声明,那么这个代码将工作:

  var user = new ApplicationUser { UserName = model.UserName, Email = model.Email }; var result = await UserManager.CreateAsync(user, model.Password); // Associate the role with the new user await UserManager.AddToRoleAsync(user.Id, model.UserRole); // Create customized claim await UserManager.AddClaimAsync(user.Id, new Claim("newCustomClaim", "claimValue")); if (result.Succeeded) {...etc