转换/修改asp.net标识中的声明2
在Windows Identity Framework(WIF)中,您可以实现一个ClaimsAuthenticationManager
,以修改对主体的声明或向其添加新声明。
声明身份validation管理器在应用程序的声明处理管道中提供了一个可扩展点,您可以使用该点来validation,过滤,修改,传入声明或在执行RP应用程序代码之前将新声明注入ClaimsPrincipal提出的声明集中。
ASP.net Identity 2是否有这样的管道钩子? 如果我想添加一些声明而不将它们保存在AspNetUserClaims表中,我该怎么做?
在用户成功登录后,这样做的逻辑位置就是正确的。这将在AccountController
登录操作中发生:
public async Task Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { return View(model); } var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); switch (result) { case SignInStatus.Success: // Transform here var freshClaims = new List { new Claim(ClaimTypes.Email, model.Email), new Claim(ClaimTypes.Locality, "Earth (Milky Way)"), new Claim(ClaimTypes.Role, "Trooper"), new Claim(ClaimTypes.SerialNumber, "555666777") }; AuthenticationManager.AuthenticationResponseGrant.Identity.AddClaims(freshClaims); return RedirectToLocal(returnUrl);
我使用DI将AuthenticationManager
注入AccountControllers
构造函数并将其设置为AccountControllers
的属性。 如果你不这样做,那么你可以从OWIN
上下文中取出它:
var authManager = HttpContext.Current.GetOwinContext().Authentication; authManager.AuthenticationResponseGrant.Identity.AddClaims(freshClaims);
- ASP.Net Identity 2 – 来自OAuthAuthorizationServerProvider的自定义响应
- entity framework6和Asp.Net Identity UserManager:多个DbContext
- 使用Simple Injector注册IAuthenticationManager
- 重用WEB API OData控制器的现有ASP.NET-MVC 5 Identity 2授权,以便轻松登录其他应用程序?
- AspNetUsers(身份)与自定义表之间的一对多关系
- OWIN AuthenticationOptions在运行时在mvc5应用程序中更新
- 使ASP.NET Identity 2.0电子邮件确认令牌适用于WCF和MVC
- 关于MVC和身份的两个问题
- 用户通过“记住我”退出