Tag: asp.net identity 2

在MVC 5 Dot Net Identity中扩展IdentityUserRole后,UserManager.GetRoles不起作用

我通过添加外键列扩展了IdentityUserRole,现在我无法授权或检索角色信息。 可以请任何人帮我解决这个问题。 我的IdentityUserRole有一个来自AspNetApplications表的外键列,IdentityUserRole扩展名如下 public class AspNetUserRoles : IdentityUserRole { [Key] public string ApplicationId { get; set; } [ForeignKey(“ApplicationId”)] public AspNetApplications AspNetApplications { get; set; } } 添加迁移后,我可以看到在AspNetUserRoles表中创建了外键列。 该表的屏幕截图如下 在这里,我有两个问题要问 为什么它创建了一个自动Discriminator列以及如何删除它,如果它有任何开销。 为了让我的授权和UserManager.GetRoles在执行此扩展之前工作,我需要做多少工作。

针对ApplicationUser Roles导航属性的ASP MVC Build Throwing Warning?

我有以下ApplicationUser模型: public class ApplicationUser : IdentityUser { public string FirstName { get; set; } public string LastName { get; set; } public virtual ICollection Roles { get; set; } public bool HasRole(string _role) { return Roles.Any(r => r.Name == _role); } public bool HasPermission(string _permission) { return Roles.Any(r => r.Permissions .Any(p => p.Name == _permission)); […]

转换/修改asp.net标识中的声明2

在Windows Identity Framework(WIF)中,您可以实现一个ClaimsAuthenticationManager ,以修改对主体的声明或向其添加新声明。 声明身份validation管理器在应用程序的声明处理管道中提供了一个可扩展点,您可以使用该点来validation,过滤,修改,传入声明或在执行RP应用程序代码之前将新声明注入ClaimsPrincipal提出的声明集中。 ASP.net Identity 2是否有这样的管道钩子? 如果我想添加一些声明而不将它们保存在AspNetUserClaims表中,我该怎么做?

Identity 2.0由管理员重置密码

如何将密码重置为其他用户的管理员? 我尝试过使用下面的代码 var code = await UserManager.GeneratePasswordResetTokenAsync(user.Id); var result = await UserManager.ResetPasswordAsync(user.Id, code, vm.NewPassword); 当单步执行GeneratePasswordResetTokenAsync时,将调用控制器的dispose方法。 有人可以赐教吗?

用户(IPrincipal)在ApiController的构造函数上不可用,使用Web Api 2.1和Owin

我正在使用带有Asp.Net Identity 2的Web Api 2.1。我试图在我的ApiController的构造函数上获取经过身份validation的用户(我使用AutoFac来注入我的依赖项),但是当调用构造函数时,User显示为未经过身份validation。 我正在尝试获取用户,以便我可以为任何数据库写操作生成审核信息。 我正在做的一些事情可以帮助诊断: 我只使用app.UseOAuthBearerTokens作为Asp.Net Identity 2的身份validation。这意味着我删除了在使用Asp.Net创建新的Web Api 2.1项目时默认启用的app.UseCookieAuthentication(new CookieAuthenticationOptions())身份2。 在WebApiConfig里面我正在注入我的存储库: builder.RegisterType().As().InstancePerRequest(); 这是我的控制器: [RoutePrefix(“api/values”)] public class ValuesController : ApiController { private IValueRepository valueRepository; public ValuesController(IValueRepository repo) { valueRepository = repo; // I would need the User information here to pass it to my repository // something like this: valueRepository.SetUser(User); } protected override […]

entity framework6和Asp.Net Identity UserManager:多个DbContext

这是MVC 5 / EF6。 所以我有以下课程: public class User : IdentityUser { public User() { Levels = new List(); } [Required, MaxLength(200)] public string FirstName { get; set; } [Required, MaxLength(200)] public string LastName { get; set; } public virtual ICollection Levels { get; set; } } 和 public class Level { public int Id { […]

ASP.Net Identity 2 – 来自OAuthAuthorizationServerProvider的自定义响应

这个问题是我之前的问题的延续: 使用SMS密码的ASP.Net Identity 2登录 – 不使用双因素身份validation 我已经构建了自定义OAuthAuthorizationServerProvider以支持自定义grant_type。 我的想法是创建一个sms grant_type,允许用户生成一次性访问代码,当用grant_type密码发送请求时,该代码将发送到他的手机,然后用户作为密码。 现在生成,存储和通过短信发送密码我想要返回自定义响应,而不是来自我的GrantCustomExtension的令牌。 public override async Task GrantCustomExtension(OAuthGrantCustomExtensionContext context) { const string allowedOrigin = “*”; context.OwinContext.Response.Headers.Add(“Access-Control-Allow-Origin”, new[] {allowedOrigin}); if (context.GrantType != “sms”) { context.SetError(“invalid_grant”, “unsupported grant_type”); return; } var userName = context.Parameters.Get(“username”); if (userName == null) { context.SetError(“invalid_grant”, “username is required”); return; } var userManager = context.OwinContext.GetUserManager(); ApplicationUser […]

Identity 2.0:创建自定义ClaimsIdentity例如:User.Identity.GetUserById (int id)for Per Request Validation

请参阅此类似问题: 需要在User.Identity中访问更多用户属性 我想创建自定义身份validation方法以与我的Razor Views一起使用,这样可以轻松访问与User.Identity对象关联的IdentityUser属性,但我不知道如何去做。 我想创建几个类似于User.Identity.GetUserName() , User.Identity.GetUserById()等的自定义扩展…而不是使用此ViewContextExtension方法。 我的身份validation类型当前是VS2013 MVC5模板的默认类型DefaultAuthenticationTypes.ApplicationCookie 。 正如Shoe所说,我需要在用户登录后插入此声明。 我的问题是: 如何以及在何处创建一个在IPrincipal下具有this IIdentity的out参数的自定义声明? 这将允许我通过CookieAuthentication在DDD设置中的实体的ViewAuthentication中访问用户属性,其中我在使用Identity 2.0的单个应用程序中有多个DbContexts。 我最终将使用WebAPI,但是现在我希望尽可能简单。 我已经找到了这个SO Q&A但是它适用于使用Tickets的Web Forms。 不确定门票和代币之间的区别吗? 这是使用基本控制器中的ViewContext的当前方法: 视图: @using Microsoft.AspNet.Identity @using Globals.Helpers @using Identity //custom Identity for Domain @using Microsoft.AspNet.Identity.Owin @if (Request.IsAuthenticated) { var url = @ViewContext.BaseController().GetAvatarUrlById(User.Identity.GetUserId()); //… } BaseController.cs public string GetAvatarUrlById(int id) { var user = UserManager.FindById(id); return […]

尝试在ASP.NET Identity 2.0中更改表名

我想更改ASP.NET Identity 2.0使用的表的名称。 我见过各种类似的问题,但没有解决我的问题。 例如,这种类型的解决方案: http : //www.goatly.net/customizing-table-names-for-identitydbcontextwithcustomuser-data-contexts似乎依赖于Code First(?)。 无论如何,实现OnModelCreating对我没有任何帮助。 我基本上将AspNetUsers和类似的表重命名为我自己的名字,并希望能够使用它们。 我有一个我想要使用的现有EF上下文(MyContext),所以我将其修改为从IdentityDbContext派生(编辑t4模板),然后在Startup.Auth中我有: UserManagerFactory = () => { var context = new MyContext(); Database.SetInitializer(new IdentityDbInitializer()); var userStore = new UserStore(context){ DisposeContext = true }; return new UserManager(userStore); }; 但是当我尝试登录时出现问题,我得到“无法联系服务器”。 我想这是因为我的UserStore无法知道我的上下文中的User表。 我希望这是OnModelCreating代码可以做的,但我对此很朦胧。 我想UserStore仍然在寻找一个“AspNetUsers”表,虽然我不知道这些名字来自哪里。 我也很难为我的上下文修改t4模板 – 这是我应该从IdentityDbContext派生的方式吗? 任何帮助非常感谢。

身份2的种子数据库

我遇到了使用Identity v2为数据库播种的问题。 我将IdentityModel从MVC5项目分离到我的数据访问层,我也设置了EF迁移。 所以我注释掉了在“IdentityConfig.cs”中使用的代码来创建初始用户并将代码放在我的种子数据库中,看起来像这样 protected override void Seed(Repository.DataContext.IdentityDb context) { // var userManager = HttpContext.Current.GetOwinContext().GetUserManager(); // var roleManager = HttpContext.Current.GetOwinContext().Get(); var owinContext = new OwinContext(); var userManager = owinContext.GetUserManager(); var roleManager = owinContext.Get(); const string name = “admin@admin.com”; const string password = “Admin@123456”; const string roleName = “Admin”; // //Create Role Admin if it does […]