Tag: asp.net identity 2

AspNetUsers(身份)与自定义表之间的一对多关系

我迫切希望在Identity 2.0的AspNetUsers表和一个名为Map的自定义表之间创建一对多的关系(一个用户可以有很多地图,但一个地图只能有一个用户)我已经尝试了大多数可用的解决方案这个网站也失去了很多天尝试在网络上找到的其他soulutions。 我被卡住了。 似乎没有什么对我有用。 我是MVC和EF的新手,所以基本上我认为我需要一些循序渐进的指南。 任何人都可以非常友好地为我提供一个新手指南,以实现这一点,从一个新的MVC5项目。 谢谢,对不起我提出的冗余问题。 PS。 我可以成功创建两个自定义表之间的关系,但不能在AspNetUsers和我的Map表之间创建。 非常感谢提前。

如何在ASP.NET MVC 5中列出具有角色名称的用户

我有ASP.NET MVC 5网站的默认项目模板,我试图列出具有角色名称(而不是ID)的所有用户。 查询是: db.Users.Include(u => u.Roles).ToList() 然后我想用以下内容打印角色名称: @string.Join(“, “, user.Roles.Select(r => r.RoleId)) 问题是我只能访问RoleId ,而不能访问存储Name和其他属性的Role类。 我可以运行另一个select来获取所有角色,然后将其用作查找。 或直接在查询中写一个连接? 我不确定如何,因为我无法访问具有绑定用户和角色的IdentityUserRole实体的表。 问题的根源似乎是IdentityUserRole (不是Role )的Roles集合, RoleId包含RoleId和UserId 。 public class IdentityUserRole { public virtual TKey RoleId { get; set; } public virtual TKey UserId { get; set; } } 我认为如果想在EF中建立N对N关系,他们应该直接收集Roles ,然后重写OnModelCreating并指定关系。 这种方法似乎使从一个对象浏览对象变得复杂。 为什么他们决定将IdentityUserRole作为额外实体包含在内? 能够在关系中添加额外数据吗? 代价是无法从用户导航到角色?

了解MVC-5身份

我使用Individual User Accounts创建了一个新的ASP.NET MVC-5应用程序,然后更新了解决方案中的所有Nuget packages 。 现在我试图遵循一些教程中显示的一些指导原则,但我遇到了一些问题。 第一个是没有创建在整个应用程序中使用的名为ApplicationRoleManager的类( ApplicationUserManager已创建)。 第二个问题更多的是关于Entity-Framework :我已经看到,为了用一个用户和角色播种数据库,许多人在ApplicationDbContext类中创建一个静态构造函数: static ApplicationDbContext() { Database.SetInitializer(new ApplicationDbInitializer()); } 所以我添加了它, ApplicationDbInitializer的实现是: public class ApplicationDbInitializer : DropCreateDatabaseIfModelChanges { protected override void Seed(ApplicationDbContext context) { InitializeIdentityForEF(context); base.Seed(context); } //Create User=Admin@Admin.com with password=Admin@123456 in the Admin role public static void InitializeIdentityForEF(ApplicationDbContext db) { var userManager = HttpContext.Current.GetOwinContext().GetUserManager(); var roleManager = […]

关于MVC和身份的两个问题

我是身份和MVC的新手,我正在尝试创建一个MVC应用程序作为我的第一个项目之一。 我已经能够遵循一些教程并成功地向我的ApplicationUser添加了其他属性:IdentityUser类 public class ApplicationUser : IdentityUser { [Required] [Display(Name = “UserName”)] [StringLength(50)] public string Handle { get; set; } [StringLength(100, ErrorMessage = “Your {0} can be at most {1} characters long.”)] [Display(Name = “First Name”)] public string FirstName { get; set; } [StringLength(100, ErrorMessage = “Your {0} can be at most {1} characters long.”)] […]

使ASP.NET Identity 2.0电子邮件确认令牌适用于WCF和MVC

我有一个服务项目(WCF)和MVC项目,它使用相同的数据库来处理移动和接口部分的服务部分。 我必须在两者上设置电子邮件确认。 我使用OWIN ASP.NET 2.0库进行身份validation,两个项目都有单独的UserManagers。 对于MVC public static ApplicationUserManager Create(IdentityFactoryOptions options, IOwinContext context) { var dataProtectionProvider = options.DataProtectionProvider; if (dataProtectionProvider != null) { manager.UserTokenProvider = new DataProtectorTokenProviderdataProtectionProvider.Create(“ASP.NET”)); } } 对于WCF var provider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider(“ASP.NET”); UserManager.UserTokenProvider =new Microsoft.AspNet.Identity.Owin.DataProtectorTokenProvider( provider.Create(“EmailConfirm”)); var code = idManager.UserManager.GenerateEmailConfirmationToken(appuser.Id); 问题在MVC中生成的电子邮件确认令牌工作正常。 在WCF中,当我创建电子邮件确认令牌时,需要从MVC网站进行validation。 在这里,它给了我“无效令牌”。 我认为这是由于令牌代码不匹配,我试图让它们尽可能相同,但我不知道哪一个在Wcf和MVC之间。 顺便说一句。 我在Visual Studio上测试localhost。

将用户名和姓氏添加到ASP.NET标识2?

我转而使用新的ASP.NET Identity 2.我实际上使用的是Microsoft ASP.NET Identity Samples 2.0.0-beta2。 任何人都可以告诉我在哪里以及如何修改代码,以便它存储用户的名字和姓氏以及用户详细信息。 这现在是否是索赔的一部分,如果是这样,我怎么能添加它? 我假设我需要在这里添加这个帐户控制器中的寄存器方法: if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); var callbackUrl = Url.Action(“ConfirmEmail”, “Account”, new { userId = user.Id, code = code }, protocol: […]

自定义电子邮件确认令

我正在使用Identity 2.0框架进行用户管理。 不幸的是,在我的用例中,使用直接链接无法完成帐户激活/密码重置,因此用户必须从他的电子邮件中复制代码并将其粘贴到网站中。 UserManager的默认GenerateEmailConfirmationTokenAsync方法生成的代码非常长,它跨越大约3行文本。 我试图覆盖此方法,生成更加用户友好的更短代码。 这不起作用,因为ConfirmEmailAsync方法总是返回“invalid token”(此方法根本不调用GenerateEmailConfirmationTokenAsync方法)。 我不知道如何存储确认代码,我更喜欢使用Identity Framework的默认存储机制,而不是手动将其存储在数据库中。 由于Identity 2.0框架是封闭源代码,我不知道如何继续。 是否有可能生成自定义(更短)的确认码以及除了我已经做过的事情之外我应该覆盖哪些方法?

validation访问令牌 – Asp.Net标识

我正在使用ASP.Net Identity来实现外部登录。 用户登录Google后,我会获得谷歌的外部访问令牌。 然后我对ObtainLocalAccessToken()进行第二次api调用,该调用将外部访问令牌换成新的本地访问令牌。 ObtainLocalAccessToken()调用VerifyExternalAccessToken() ,它通过手动进行http调用和解析user_id来validation提供者的外部访问令牌。 如何利用ASP.NET标识删除整个方法VerifyExternalAccessToken() ? 我相信[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]的用途是什么呢? 我想用该属性修饰ObtainLocalAccessToken()端点并在标题中发送external_access_token( {‘Authorization’ : ‘Bearer xxx’ } ),它应该填充User.Identity而无需手动validation外部访问令牌? 我相信这是目的,但我不能让它发挥作用。 我从谷歌发送一个有效的外部访问令牌,它被401拒绝。 我在Startup.Auth btw中有这一行: app.UseOAuthBearerTokens(new OAuthAuthorizationServerOptions { TokenEndpointPath = new PathString(“/Token”), Provider = new ApplicationOAuthProvider(), AuthorizeEndpointPath = new PathString(“/AccountApi/ExternalLogin”), AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), AllowInsecureHttp = true }); 或者,可以使用“/ Token”端点来交换本地端口的外部访问令牌? 哪种方法是正确的?

如何在用户注册期间添加声明

我正在使用带有身份2.1.0和VS2013 U4的ASP.NET MVC 5项目。 我想在注册期间向用户添加声明,以便存储在db中。 这些声明代表用户自定义属性。 当我为管理员创建一个用于创建/编辑/删除用户的网页时,我仍然使用AccountController create方法创建用户,但我不想登录该用户。 如何将这些声明添加到用户?

ASP Identity 2.0:重新生成身份

我无法让ASP Identity按需刷新存储在cookie中的身份。 在Startup.Auth.cs文件中,cookie设置为重新生成,如下所示: app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString(“/Account/Login”), Provider = new CookieAuthenticationProvider { OnValidateIdentity = SecurityStampValidator.OnValidateIdentity( validateInterval: TimeSpan.FromMinutes(30), regenerateIdentityCallback: ((manager, user) => manager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie)), getUserIdCallback: ((claimsIdentity) => int.Parse(claimsIdentity.GetUserId()))) } }); 但是我无法弄清楚如何在代码中刷新User.Identity上的内容,即在我需要刷新时强制刷新身份cookie。 我希望能够以编程方式使用重新生成身份回调,这可能吗? 我的问题与此类似: 如何使用Asp.Net Identity 2将用户添加到角色后使.AspNet.ApplicationCookie无效? 但是我想刷新而不是使cookie无效。 编辑 在查看链接的问题后,我尝试了以下(没有完整的error handling): IOwinContext context = Request.GetOwinContext(); QuizSparkSignInManager manager = context.Get(); ClaimsIdentity newIdentity […]