Tag: asp.net identity

在ASP.NET Core Identity UI中更改路由?

自ASP.NET Core 2.1发布以来,我正在使用新的Identity UI软件包。 使用新生成的MVC项目,这里有一些可用的页面URL: /Home/About /Home/Contact /Identity/Account/Login /Identity/Account/Register 如何配置路由以从URL中删除/Identity/ part?

UserManager错误 – 在上一个异步操作完成之前,在此上下文中启动了第二个操作

我使用Identity v2.0.0.0,EF 6,Castle Windsor IOC Container,Microsoft SQL Server 2005,使用我的asp.net MVC5 Web应用程序来解决这个问题 我试图通过使用UserManagerExtensions,FindById()方法获取当前登录用户,但它抛出一个错误“System.NotSupportedException:在上一个异步操作完成之前在此上下文上启动了第二个操作。使用’await’确保在调用此上下文中的另一个方法之前已完成任何异步操作。不保证所有实例成员都是线程安全的“ 我从堆栈跟踪中理解的是“AsyncHelper.RunSync()”导致问题,我没有在我的代码中使用任何异步函数,而是使用AsyncHelper参考的“FindById()” – : http://www.symbolsource。组织/ MyGet /元/ aspnetwebstacknightly /项目/ Microsoft.AspNet.Identity.Core / 2.0.0-beta1-140129 /发行/默认/ Microsoft.AspNet.Identity.Core / Microsoft.AspNet.Identity.Core /扩展/ UserManagerExtensions。 CS?ImageName = Microsoft.AspNet.Identity.Core 关于此Identity错误的信息似乎很少,我在应用程序的不同部分使用当前登录用户的详细信息,当我的服务层调用getCurrentLoggedInUser()函数时,这个错误似乎是随机发生的。 请帮忙…. 我的代码和堆栈跟踪—-注意:我发现了另一个类似类型的事件: https : //aspnetidentity.codeplex.com/workitem/2408 Global.asax中: .Register(Component .For<UserManager>() .UsingFactoryMethod((kernel, creationContext) => new TempoUserManager(new UserStore(new ApplicationDbContext(ASPUserDatabaseConnectionString)))) .LifestylePerWebRequest() ) .Register(Component .For<RoleManager>() .UsingFactoryMethod((kernel, creationContext) => […]

如何在ASP.NET标识中创建不同的用户类型?

我是网络开发的新手。 现在我用ASP.NET Identity学习ASP.NET MVC 5。 你能否在我的情况下给我一些建议: 在我的网站中,我想要一些类型的用户。 例如:买方卖方 他们每个人都可以登录并控制他的部分信息。(例如,买家可以更改他的信息,添加请求。卖家也可以更改自己的信息并添加商品) 现在,我创建这样的东西: using Microsoft.AspNet.Identity.EntityFramework; using System.Data.Entity; public class ApplicationUser : IdentityUser { public int? BuyerId { get; set; } public int? SellerId { get; set; } public virtual Buyer Buyer { get; set; } public virtual Seller Seller { get; set; } } public class ApplicationDbContext : […]

如何使用Code First在ASP.NET MVC 5 Identity 2.0中的AspNetUser表(Id列)的Customer表(CreatedBy列)中添加外键

我使用Visual Studio 2013 Update 2 RC创建了Empty MVC(ASP.NET Web应用程序)项目,然后使用以下命令添加了AspNet Identity Samples: PM>安装包Microsoft.AspNet.Identity.Samples -Pre 我已启用并添加了迁移,然后更新了数据库,这些数据库创建了默认表。 我想创建一个Customer表,其中包含2列作为外键: 组表(GroupId列) AspNetUsers表(Id列) 所以我创建了2个Customer&Group类,并使用Data-annotations添加了外键,如下所示: namespace IdentitySample.Models { // 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 async Task GenerateUserIdentityAsync(UserManager manager) { […]

Asp.net mvc身份SecurityStamp随处可见

我想要做的是将用户ID限制为只能一次登录到一个设备。 例如,用户ID“abc”登录到他们的计算机。 用户ID“abc”现在尝试从手机登录。 我想要发生的是在他们的计算机上杀死会话。 我正在使用Asp.net mvc身份成员资格并使用SecurityStamp来实现此目的。 这是我在帐户/登录操作中的代码: [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task Login(LoginViewModel model, string returnUrl) { var user = UserManager.FindByEmail(model.Email); var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); await UserManager.UpdateSecurityStampAsync(user.Id); 根据UpdateSecurityStampAsync方法,doc说:为用户生成一个新的安全标记,用于SignOutEverywherefunction。 但它不起作用。

JavaScript:如何生成像C#这样的Rfc2898DeriveBytes?

编辑:在评论中的每次讨论中,让我澄清一下,这将发生在SSL后面的服务器端。 我不打算将散列密码或散列方案暴露给客户端。 假设我们有一个现有的asp.net身份数据库,其中包含默认表(aspnet_Users,aspnet_Roles等)。 根据我的理解,密码散列算法使用sha256并将salt +(散列密码)存储为base64编码的字符串。 编辑:这个假设不正确,请参阅下面的答案。 我想用JavaScript版本复制Microsoft.AspNet.Identity.Crypto类’ VerifyHashedPassword函数的function。 假设密码是welcome1 ,其asp.net哈希密码是ADOEtXqGCnWCuuc5UOAVIvMVJWJANOA / LoVy0E4XCyUHIfJ7dfSY0Id + uJ20DTtG + A == 到目前为止,我已经能够重现获取salt和存储的子键的方法部分。 C#实现或多或少地执行此操作: var salt = new byte[SaltSize]; Buffer.BlockCopy(hashedPasswordBytes, 1, salt, 0, SaltSize); var storedSubkey = new byte[PBKDF2SubkeyLength]; Buffer.BlockCopy(hashedPasswordBytes, 1 + SaltSize, storedSubkey, 0, PBKDF2SubkeyLength); 我在JavaScript中有以下内容(任何方面都不优雅): var hashedPwd = “ADOEtXqGCnWCuuc5UOAVIvMVJWjANOA/LoVy0E4XCyUHIfJ7dfSY0Id+uJ20DTtG+A==”; var hashedPasswordBytes = new Buffer(hashedPwd, ‘base64’); var saltbytes = […]

如何使用Asp.Net Identity 2将用户添加到角色后使.AspNet.ApplicationCookie失效?

我有两个与此相关的问题: 1)我需要使用Asp.Net Identity 2添加/删除一些远程用户到Role后无效.AspNet.ApplicationCookie我尝试使用UpdateSecurityStamp,但由于没有更改密码或用户名,因此SecurityStamp保持不变。 当我使用ApplicationRoleManger时,我可以看到用户角色已更新,但在User.Identity声明中,它们保持不变。 2).AspNet.ApplicationCookievalidation如何工作以及如何访问它? 我试图使用此代码,但没有任何效果 什么是ASP.NET Identity的IUserSecurityStampStore 接口? 更新:这是我的Cookievalidation设置: app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString(“/Account/Login”), Provider = new CookieAuthenticationProvider { OnValidateIdentity = SecurityStampValidator.OnValidateIdentity( validateInterval: TimeSpan.FromSeconds(0), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)), OnApplyRedirect = ctx => { if (!IsApiRequest(ctx.Request)) { ctx.Response.Redirect(ctx.RedirectUri); } } } }); 我可以看到user.GenerateUserIdentityAsync(manager)仅在登录时被命中。

使用带有IdentityFactory中间件的IOC容器

我试图理解UserManagerFactory中间件,这里解释了usermanager的每个请求生命周期管理 。 我创建了这个我从Startup Configuration方法调用的类 public class CustomUserManagerProvider { public static CustomUserStore CreateCustomUserStore() { return new CustomUserStore(/*Need to inject dependencies here*/); } public static CustomUserManager CreateCustomUserManager(IdentityFactoryOptions options, IOwinContext context) { return new CustomUserManager(context.Get<CustomUserStore>()); } } 和启动配置 public void Configuration(IAppBuilder app) { app.CreatePerOwinContext(CustomUserManagerProvider.CreateCustomUserStore); app.CreatePerOwinContext(CustomUserManagerProvider.CreateCustomUserManager); ////….Other things } 现在,我的CustomUserStore有一些依赖项,我想在构造函数中注入。 IOC容器的组合根知道如何解决这些依赖关系。 如何CustomUserManagerProvider DI容器(如果有意义的话)…… 虽然这很有效 public static CustomUserStore CreateCustomUserStore() { […]

ASP.NET身份,立即将另一个用户添加到角色(他们不必再次注销)

首先,我知道这个问题: MVC 5 AddToRole在它运行之前需要注销吗? 而这一个: 什么是ASP.NET Identity的IUserSecurityStampStore 接口? 所以请不要将其标记为副本。 我正在尝试将另一个用户添加到角色中(即我们添加到该角色的用户不是当前用户。如果是这样,我链接到的第一个问题的答案就足够了。) 像这样: IdentityResult result = await userManager.AddToRoleAsync(userID, roleName); 我正在做的两种情况是:从管理页面,当前用户是管理员; 以及基本身份validation保护的webhook(根本没有当前用户)。 问题:如果此更改适用的用户已登录并使用该应用程序,我需要立即应用“添加到角色”更改。 他们不应该再次注销并再次进行更改,而且需要立即进行。 感谢大家。 编辑:顺便说一下,User.IsInRole(roleName)需要注销和登录才能反映被添加到新角色。 UserManager.IsInRole(userID,roleName)没有,因为(我假设)它直接进入数据库表进行检查。 但是如果用户点击了一个以他们刚刚添加的角色担保的动作方法,他们仍然需要再次登录,这是公平的。 如果有办法解决这个问题仍然很好奇。 编辑:以下是Authorize属性的源代码: https : //github.com/ASP-NET-MVC/aspnetwebstack/blob/4e40cdef9c8a8226685f95ef03b746bc8322aa92/src/System.Web.Mvc/AuthorizeAttribute.cs 它使用User.IsInRole,这本质上是我们需要再次登录的原因。 似乎覆盖的方法是AuthorizeCore(HttpContextBase httpContext)。 我现在不是很勇敢或者不够好,但是如果你想要有很多人会发现这很有帮助。

MVC 5基于角色的身份validation

我试图将我们的“管理”页面锁定为仅使用Asp.net身份的管理员(我们在MVC5中构建)。 我可以[授权(用户=“管理员”)]工作,但不能[授权(角色=“管理员”)]工作。 我在dbo.AspNetRoles表中创建了该角色,然后通过将用户GUID与aspnetroles表中的ID配对,将该帐户与AspNetUserRoles相关联。 我在之前的MVC版本中看到,您必须进入web.config才能添加一些行。 谁能帮助我指出正确的方向?