如何在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 here
searchAdd 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
- ASP.NET身份 – 不支持每种types的多个对象集
- 如何将我的Autofac容器插入到ASP中。 NET身份2.1
- 在Asp.net Identity MVC中创buildangular色5
- ASP.NET MVC 5与WebMatrix SimpleMembershipProvider不兼容吗?
- 如何使用int ID列更改ASP.net Identity 2.0的表名?
- UseOAuthBearerToken与UseOAuthBearerAuthentication
- 在ApiController操作中获取当前用户,而不传递用户ID作为参数
- 如何在Microsoft.AspNet.Identity.EntityFramework.IdentityUser中更改id的types
- ASP.NET(OWIN)身份:如何从Web API控制器获取用户ID?