Tag: asp.net identity

使用结构图dependency injection时,“没有注册IUserTokenProvider”

我有一个MVC 5项目,该项目已被修改为使用int作为身份的主键,如本指南所示 然后我按照本指南中的说明启用了电子邮件确认 一切都按预期工作正常。 然后我安装了structuremap.mvc5用于dependency injection,并添加了修改后的DefaultRegistry.cs public DefaultRegistry() { Scan( scan => { scan.TheCallingAssembly(); scan.WithDefaultConventions(); scan.AssemblyContainingType(typeof(MyProject.Data.MyDbContext)); scan.With(new ControllerConvention()); }); //For().Use(); For<IUserStore>().Use().LifecycleIs(); For().Use(() => HttpContext.Current.GetOwinContext().Authentication); } 该项目构建正常但在尝试在站点上注册新用户时,发送电子邮件确认现在抛出exceptionSystem.NotSupportedException:在调用UserManager.GenerateEmailConfirmationTokenAsync(userID)时没有注册IUserTokenProvider。 private async Task SendEmailConfirmationTokenAsync(int userID, string subject) { string code = await UserManager.GenerateEmailConfirmationTokenAsync(userID); var callbackUrl = Url.Action(“ConfirmEmail”, “Account”, new { userId = userID, code = code }, protocol: Request.Url.Scheme); […]

如何首先使用代码在已创建的数据库中创建ASP.net身份表?

我的应用程序已经开发了大约一个月。 我现在决定使用ASP.NET Identity。 我已经有了身份的视图模型,但需要创建表。 我在想,如果我有视图模型,我不确定为什么我没有表格? 我使用自己的自定义上下文在初始化程序中删除了create,我只需要知道如何让EF为用户和角色构建包含的Identity表? 我环顾四周,发布的答案似乎都不是我需要的?

动态添加角色以授权控制器的属性

我需要启用我的管理员用户即时更改用户的访问权限,以便他们可以创建新角色并为这些角色添加权限。 我希望能够创建一个Authorize属性来粘贴在我可以从数据库添加角色的控制器类之上,这样我就不必在开发过程中“设置”角色,如[Authorize(Roles=”Role1, Role2″)]等 所以像[Authorize(Roles = GetListOfRoles()] 我发现了这个问题 – ASP.NET MVC授权用户有许多角色 ,它们做了类似的事情,但也许有办法改变它,以便从数据库中获取权限/角色列表?

更改ASP.NET标识以使用现有数据库

我正在使用ASP.NET MVC 5和Database-First工作流程。 我已经在我现有的数据库中创建了身份表( AspNetUsers , AspNetRoles等),但是我在使注册和登录function正常工作时遇到了问题。 这是IdentityModels.cs类 public class ApplicationDbContext : IdentityDbContext { public ApplicationDbContext() : base(“MyConnectionString”) // I use “MyConnectionString” instead of “DefaultConnection” { } 这是来自web.config的EF连接字符串的样子 为了更好地衡量,这里是从edmx生成的上下文类 public partial class MyConnectionString : DbContext { public MyConnectionString() : base(“name=MyConnectionString”) { } 对我来说似乎都很好,它应该能够在数据库中创建用户但是我在登录或尝试分别注册时收到以下错误: 登录: 实体类型ApplicationUser不是当前上下文的模型的一部分 第73行:var result = await SignInManager.PasswordSignInAsync(model.Email,model.Password,model.RememberMe,shouldLockout:false); exception详细信息:System.InvalidOperationException:实体类型ApplicationUser不是当前上下文的模型的一部分。 注册: 实体类型ApplicationUser不是当前上下文的模型的一部分 第155行:var result […]

如何删除dbo.AspNetUserClaims和dbo.AspNetUserLogins表(IdentityUserClaim和IdentityUserLogin实体)?

我们的应用程序不需要身份使用的过多“登录”和“声明”function。 如果这些表没有在数据库中创建,那将会很好,但我不想重新实现所有的身份类…… 我假设它是这样的 public ApplicationDbContext : IdentityDbContext { […] protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Ignore(); modelBuilder.Ignore(); } } 您会认为这根据function描述有效,但事实并非如此。 AspNetUserClaim和AspNetUserLogins表仍然会被创建。 这样做的正确方法是什么?

CreateUserIdenityAsync返回自定义IdentityUser的“UserId not found”exception

我正在关注使用JWT创建基于身份和角色的声明的bitoftech教程 。 我的应用程序用户是一个带有int PK的自定义User表。 目前,GenerateUserIdentityAsync方法只返回一个奇怪的UserId not found错误。 这是我的代码: ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(userManager, “JWT”); 和User实体中的实现: public async Task GenerateUserIdentityAsync(UserManager manager, string authenticationType) { //error on this line: CreateIdentityAsync throws error var userIdentity = await manager.CreateIdentityAsync(this, authenticationType); return userIdentity; } 我的UserManager类定义如下: public class AppUserManager : UserManager 奇怪的是,当我调试时, GenerateIdentityAsync中的实例确实有一个UserId属性,但是只有一个id ,我想知道这是不是错误的地方? (听起来不对) 我正在查看源代码 (第80行),但我无法弄清楚exception被抛出的位置。 抛出的确切exception是: UserId not found. […]

在ASP.NET身份中获取使用Microsoft帐户进行身份validation的用户的电子邮件

我正在使用VS2013中新的MVC 5模板附带的ASP.NET标识。 我已配置外部登录提供商,以便人们可以使用Google,Facebook或Microsoft注册。 但是,我仍然希望获得人们的电子邮件地址(例如,用于通知,更新等)。 默认情况下, app.UseGoogleAuthentication()也会请求用户的电子邮件地址。 对于Facebook,我创建了一个新的FacebookAuthenticationOptions类实例,并添加了以下范围: facebook.Scope.Add(“email”) 。 这也有效。 我在使用Microsoft帐户的人收到电子邮件时遇到问题。 MicrosoftAccountAuthenticationOptions还具有Scope属性,但添加email似乎不起作用。 在文档中,我看到有一个范围wl.emails但它返回一组电子邮件地址,我不确定这是否等同于Facebook的email 。 有人建议如何在validation时将电子邮件地址作为索赔吗?

实体类型’Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin ‘需要定义一个键

我有一个使用EF7的ASP.NET5 MVC应用程序。 它到目前为止工作得很好,我能够在数据库中添加迁移和持久数据。 现在,在将Identity添加到我的数据层项目后,我在尝试添加新迁移时遇到此错误: 实体类型’Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin’需要定义一个键 我的上下文源自IdentityDbContext: public class ASSWebApiContext : IdentityDbContext AppUser类: using Microsoft.AspNet.Identity.EntityFramework; using System; namespace ASS.DomainDataModel.Models { public class AppUser : IdentityUser { public string AppUserId { get; set; } public DateTime FirstFlight { get; set; } } } project.json { “version”: “1.0.0-*”, “description”: “ASS.DomainDataModel Class Library”, “authors”: [ “xxxx” ], “tags”: [ […]

MVC6中的ASP身份 – 登录路径属性不起作用

从beta 5更新到beta 8后,我无法在cookie身份validation选项中设置自定义登录路径。 services.AddCookieAuthentication(config => { config.LoginPath = “/Auth/Login”; //or //config.LoginPath = new Microsoft.AspNet.Http.PathString(“Auth/Login”); }); 该值完全被忽略。 仍然会被重定向到默认的“ /帐户/登录 ”。 是否还有其他选项来设置此路径?

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”端点来交换本地端口的外部访问令牌? 哪种方法是正确的?