Tag: asp.net identity

Microsoft ASP.NET标识 – 具有相同名称的多个用户

我正在尝试一些非常奇特的东西我相信并且我遇到了一些问题,我希望可以在StackOverflow上的用户帮助下解决。 故事 我正在编写和申请,需要认证和注册。 我选择使用Microsoft.AspNet.Identity 。 我过去没有经常使用它,所以不要在这个决定上评判我。 上面提到的框架包含一个users表,它包含所有注册用户。 我已经创建了一个示例图片来展示应用程序的工作方式。 该应用程序包含3个不同的组件: 后端(WebAPI)。 客户(直接使用WebAPI)。 最终用户(使用移动应用程序 – iOS)。 所以,我确实有一个客户可以注册的后端。 每个成员有一个唯一用户,所以这里没问题。 客户是这里的公司,最终用户是公司的客户。 您可能已经看到了问题, User 1很可能是Customer 1 ,也是Customer 2 。 现在,客户可以邀请会员使用移动应用程序。 当客户这样做时,最终用户确实会收到一封电子邮件,其中包含自己激活的链接。 现在,只要您的用户是唯一的,这一切都正常,但我确实拥有一个Customer 1和Customer 2 。 两个客户都可以邀请同一个用户,用户需要注册2次,每个Customer 。 问题 在Microsoft.AspNet.Identity框架中,用户应该是唯一的,根据我的情况,我无法管理。 这个问题 是否可以向IdentityUser添加额外的参数以确保用户是唯一的? 我已经做了什么 创建一个inheritance自IdentityUser的自定义类,其中包含一个应用程序ID: public class AppServerUser : IdentityUser { #region Properties /// /// Gets or sets the id of the […]

扩展ASP.NET标识角色:IdentityRole不是当前上下文模型的一部分

我正在尝试在我的MVC5应用程序中使用新的ASP.NET标识,特别是我正在尝试将ASP.NET标识集成到现有数据库中。 我已经阅读了有关DB First和ASP.NET Identity的问题/答案,并且遵循了所有建议我仍然无法将角色添加到我的数据库中,尽管添加用户没有任何问题。 这是我的代码: var context = new PayrollDBEntities(); var roleManager = new RoleManager(new RoleStore(context)); bool roleExists = roleManager.RoleExists(roleDto.Name); if (roleExists){ return false; } var role = new AspNetRole(roleDto.Name){ Name = roleDto.Name, }; IdentityResult result = roleManager.Create(role);//Getting exception here 在代码的最后一行,我得到类型’System.InvalidOperationException’: The entity type IdentityRole is not part of the model for the current context.的exception’System.InvalidOperationException’: […]

Owin.AppBuilderExtensions中的内存泄漏

我在Web应用程序中使用OWIN + Microsoft.AspNet.Identity.Owin(v.2.0.0.0)。 我按照广泛推荐的方式为每个Web请求注册UserManager / DbContext: app.CreatePerOwinContext(ApplicationDbContext.Create); app.CreatePerOwinContext(ApplicationUserManager.Create); 但都没有处理过。 我瞥了一眼reflection器,看起来像扩展方法中的一个bug: public static IAppBuilder CreatePerOwinContext(this IAppBuilder app, Func<IdentityFactoryOptions, IOwinContext, T> createCallback) where T: class, IDisposable { if (app == null) { throw new ArgumentNullException(“app”); } if (createCallback == null) { throw new ArgumentNullException(“createCallback”); } object[] args = new object[1]; IdentityFactoryOptions options = new IdentityFactoryOptions { DataProtectionProvider […]

如何将MVC 5身份validation添加到Unity IoC?

我正在努力在我的应用程序中实现新的ASP.NET MVC 5开箱即用身份validation。 但是当使用Unity作为我的IoC时,我不能使用AccountController的任何部分,因为我给出了错误: IUserStore类型`1没有可访问的构造函数。 这是我给出的统一设置,在global.asax中调用 public class DependencyConfig { public static void Initialise() { var container = BuildUnityContainer(); DependencyResolver.SetResolver(new UnityDependencyResolver(container)); } private static IUnityContainer BuildUnityContainer() { var container = new UnityContainer(); // register all your components with the container here // it is NOT necessary to register your controllers container.RegisterType(); container.RegisterType(); container.RegisterType(); return container; […]

基于令牌的webapi实现以保护端点

我有一个带有Web服务的Web应用程序,客户端将使用我的Web应用程序注册他们的应用程序。 现在,客户端将拥有SPA或移动应用程序的应用程序 ,他们将从他们的应用程序中使用我的Web服务。 所以我将实现基于令牌的机制来保护对我的端点的访问。 1)但是在这里我很困惑,我应该使用任何框架来生成访问令牌,或者我可以使用任何库,它将生成任何随机字符串,我将在响应中发送。例如这样的事情: TokenId = Convert.ToBase64String(Guid.NewGuid().ToByteArray()).Replace(“+”, “_”) 因此,在注册应用程序时,如果客户端已为其应用程序启用了身份validation,则将validation用户,然后我将返回访问令牌,并使用该用户ID保存在数据库中的accesstoken。 所以我的数据库表如下所示,用于存储经过validation的accesstoken: Id(autogenerated) accesstoken userid clientid createdat expiresat 因此,在用户进行身份validation后,现在如果用户想要访问任何受保护资源,则用户需要在后续调用头中传递此访问令牌。 所以我要做的是,我将从头部获取访问令牌,然后validation对该数据库的accessstoken,然后允许访问我的受保护资源,其他明智的用户将获得授权。 我已经看到很多与此相关的事情,所以基本上这是oauth2,我想实现这个。 我见过Openid connect (这个项目甚至不编译),它位于oauth2之上,用于身份validation,oauth2将用于授权。 但在这里,因为我在我的数据库中存储访问令牌,所以这是我的疑问: 2)现在我需要openconnectid(但是这个项目甚至没有编译)来validation访问令牌,或者因为我在我的数据库中存储访问令牌,我不需要openconnectid? 3)我想实现asp.net身份,但后来我将收到动态数据库连接字符串,因为我看到asp.net身份主要与entity framework一起工作我找不到任何我可以使用ado.net来validation用户名的来源和密码使用SQL查询。 我知道我可以这样做: 创建一个实现IUser的自定义用户类,如此处所述定义实现的自定义用户存储 public class UserStoreService : IUserStore, IUserPasswordStore 但我没有这个信息,因为我没有固定连接string.connection字符串再次存储在客户端注册的数据库中。 4)我们已经为用户提供了一个固定的端点,客户端可以通过该端点创建管理员,因此我将使用我的RSA算法进行密码散列,然后将其存储在数据库中。 那么现在我需要使用asp.net身份吗? 5)我已经看到很多以下链接与基于令牌的实现,但我没有得到他们在哪个部分validationaccesstoken但现在因为我有存储在我的数据库中的accesstoken我是否需要使用以下任何实现? JSON Web Token in ASP.NET Web API 2 using Owin Token Based Authentication using ASP.NET Web […]

如何在ASP.Net MVC 5视图中获取ApplicationUser的自定义属性值?

在ASP.Net MVC 5 , ApplicationUser可以扩展为具有自定义属性。 我已经扩展它,现在它有一个名为DisplayName的新属性: // You can add profile data for the user by adding more properties to your ApplicationUser class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more. public class ApplicationUser : IdentityUser { public string ConfirmationToken { get; set; } public string DisplayName { get; set; } //here it is! public async Task […]

更改ASP.NET标识存储用户数据的数据库

我们创建了一个新的ASP.NET 4.5.1项目,如下所示: Visual Studio 2013 新项目 Visual C# 卷筒纸 ASP.NET Web应用程序 Web API 更改身份validation 个人用户帐户 好的>好的 在解决方案资源管理器> App_Start> Startup.Auth.cs文件中,有以下代码用于配置ASP.NET Indentity。 我们如何更改UserManager存储用户数据的数据库? static Startup() { PublicClientId = “self”; UserManagerFactory = () => new UserManager(new UserStore()); OAuthOptions = new OAuthAuthorizationServerOptions { TokenEndpointPath = new PathString(“/Token”), Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory), AuthorizeEndpointPath = new PathString(“/api/Account/ExternalLogin”), AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), […]

抛出特定exception时,SmtpClient.SendMailAsync会导致死锁

我正在尝试基于VS2013项目模板中的示例AccountController为ASP.NET MVC5网站设置电子邮件确认。 我已经使用SmtpClient实现了IIdentityMessageService ,试图让它尽可能简单: public class EmailService : IIdentityMessageService { public async Task SendAsync(IdentityMessage message) { using(var client = new SmtpClient()) { var mailMessage = new MailMessage(“some.guy@company.com”, message.Destination, message.Subject, message.Body); await client.SendMailAsync(mailMessage); } } } 调用它的控制器代码直接来自模板(由于我想排除其他可能的原因,因此将其解压缩为单独的操作): public async Task TestAsyncEmail() { Guid userId = User.Identity.GetUserId(); string code = await UserManager.GenerateEmailConfirmationTokenAsync(userId); var callbackUrl = Url.Action(“ConfirmEmail”, “Account”, […]

将asp.net MVC从5.0.0-beta2更新为5.0.0-rc1

昨晚,我决定尝试将SignalR应用到我的应用程序,因为我使用MVC 5,我不得不使用SignalR的2.0 beta。 哦,男孩,什么时间。 昨晚,微软还决定推出所有mvc 5相关软件包的rc1,并且更新破坏了一些事情 – 主要是在beta2模板中的帐户控制器中。 public AccountController() { IdentityStore = new IdentityStoreManager(); AuthenticationManager = new IdentityAuthenticationManager(IdentityStore); } public AccountController(IdentityStoreManager storeManager, IdentityAuthenticationManager authManager) { IdentityStore = storeManager; AuthenticationManager = authManager; } public IdentityStoreManager IdentityStore { get; private set; } public IdentityAuthenticationManager AuthenticationManager { get; private set; } IdentityStoreManager和IdentityAuthenticationManager不再被识别。 有没有人成功迁移到rc1了? 我找不到MS的任何文档或更新的模板。

如何检查ASP.NET MVC 5中客户端是否已存在用户?

使用Visual Studio 2013.4 (Visual Studio 2013 Update 4)我创建了一个具有个人用户帐户身份validation配置的常规ASP.NET MVC 5项目。 所有用户注册和登录function已经由Visual Studio支持我,并且工作正常。 如何在注册页面上实现以下规则的客户端validation: 没有已注册的用户使用相同的电子邮件 ?