Tag: asp.net identity

扩展ASP.NET身份

从许多方面来看,这似乎已被多次询问,但这些似乎都不适合我的确切情况。 这是我的_LoginPartial.cshtml文件中的一行: @Html.ActionLink(“Hello ” + User.Identity.GetUserName() + “!”, “Manage”, “Account”, routeValues: null, htmlAttributes: new { title = “Manage” }) 请参阅说明User.Identity.GetUserName()的部分? 我想将其更改为User.Identity.FirstName或User.Identity.GetFirstName()。 我不希望它说“你好电子邮件地址”,而是“Hello Bob” 我的想法是,我只是想在Identity类上显示一个新的属性(或方法)。 显然它必须不止于此。 我添加了FirstName属性, 它在AccountController中可用 。 public class ApplicationUser : IdentityUser { public string FirstName { get; set; } public string LastName { get; set; } 它不会在_LoginPartial文件中公开。 我希望它暴露在那里! 谢谢您的帮助

如何使用ASP.NET Identity Framework设置密码到期

我有一个使用Identity的ASP.NET项目。 对于有关密码的身份配置,正在使用PasswordValidator 。 如何扩展PasswordValidator当前的密码强制执行( RequiredLength , RequiredDigit等)以满足在N天后要求密码过期的要求?

我应该如何从MVC 6视图中访问我的ApplicationUser属性?

我正在开发一个ASP.Net vNext / MVC6项目。 我正在掌握ASP.Net Identity。 ApplicationUser类显然是我应该添加任何其他用户属性的地方,这适用于Entity Framework,我的其他属性按预期存储在数据库中。 但是,当我想从我的视图中访问当前登录用户的详细信息时,问题就出现了。 具体来说,我有一个_loginPartial.cshtml ,我想在其中检索并显示用户的Gravatar图标,我需要该电子邮件地址。 Razor View基类具有User属性,这是一个ClaimsPrincipal 。 如何从此User属性返回到我的ApplicationUser ,以检索我的自定义属性? 请注意,我不是在问如何查找信息; 我知道如何从User.GetUserId()值中查找ApplicationUser 。 这是一个关于如何合理地解决这个问题的问题。 具体来说,我不想: 从我的视图中执行任何类型的数据库查找(关注点分离) 必须为每个控制器添加逻辑以检索当前用户的详细信息(DRY原则) 必须为每个ViewModel添加User属性。 这似乎是一个“横切关注点”,应该有一个集中的标准解决方案,但我觉得我错过了一块拼图游戏。 从视图中获取这些自定义用户属性的最佳方法是什么? 注意:似乎MVC团队通过确保UserName属性始终设置为用户的电子邮件地址,在项目模板中侧面解决了这个问题,巧妙地避免了他们执行此查找以获取用户的电子邮件地址! 这对我来说似乎有点欺骗,在我的解决方案中,用户的登录名可能是也可能不是他们的电子邮件地址,所以我不能依赖这个技巧(我怀疑还有其他属性我需要稍后访问)。

获取ASP.NET MVC5身份系统中的所有角色名称

MVC5使用新的身份系统。 我怎样才能获得所有角色名称? 我尝试通过IdentityStore访问它但没有成功。

如何在aspnet身份中进行会话管理?

我使用Asp.net身份 登录,注册,忘记密码等,源代码取自以下链接: http://www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-web-app-with-email-confirmation-and-password-reset http://www.asp.net/identity/overview/features-api/account-confirmation-and-password-recovery-with-aspnet-identity 。 现在我有一个UserMaster表,在注册期间我要求以下字段: FullName,EmailId,Password,ContactNumber,Gender 。 我的UserMaster包含以下字段: Id,FullName,EmailId,ContactNumber,Gender 现在,当用户提交注册表格时,此FullName,EmailId,ContactNumber,Gender将与电子邮件一起保存在UserMaster中 ,密码将保存在AspnetUser中 。 我的注册方法与上面2个链接中提供的方法相同。 在这里您可能会注意到我的UserMaster和AspnetUser之间没有任何关系,因此在登录时用户将输入他的电子邮件ID登录我将使用此方法await SignInManager.PasswordSignInAsyncvalidation用户,如果此方法返回成功,那么我将要做的是使用此电子邮件ID并在我的UserMaster中查看此电子邮件,如果找到匹配,我将从UserMaster获取UserId并将其存储在会话中并使用我的登录方法使用我的应用程序,如下所示: public async Task Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { return View(model); } // This doesn’t count login failures towards account lockout // To enable password failures to trigger account lockout, change to shouldLockout: true var result = […]

为什么ASP.NET Identity 2.0使用GUID /字符串作为用户ID?

正如标题所说,我想知道,为什么ASP.NET Identity 2.0使用带有GUID的字符串作为用户表的主要群集密钥。 这对整数id有什么好处吗? 我只看到问题,GUID不是聚簇索引的最佳选择。 我错过了什么或整数仍然是更好的选择吗?

在控制器中生成令牌

我正在使用Owin和ASP.NET Identity来使用OAuth令牌来保护我的Web API方法。 令牌子系统设置如下: var oauthOptions = new OAuthAuthorizationServerOptions() { TokenEndpointPath = new PathString(“/Token”), Provider = new SimpleAuthorizationServerProvider(), AccessTokenFormat = new TicketDataFormat(app.CreateDataProtector(typeof(OAuthAuthorizationServerMiddleware).Namespace, “Access_Token”, “v1”)), RefreshTokenFormat = new TicketDataFormat(app.CreateDataProtector(typeof(OAuthAuthorizationServerMiddleware).Namespace, “Refresh_Token”, “v1”)), AccessTokenProvider = new AuthenticationTokenProvider(), RefreshTokenProvider = new AuthenticationTokenProvider(), AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), AllowInsecureHttp = true }; app.UseOAuthAuthorizationServer(oauthOptions); app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); 它适用于基于用户名/密码请求令牌然后使用这些令牌。 但是,由于用户在访问呈现SPA的控制器时已经过身份validation,因此我想在我的视图中生成令牌并将其传递给Javascript代码,而不必再次在SPA中登录。 所以我的问题是:如何手动生成令牌,以便将其包含在SPA视图中?

MVC5:UserManager.AddToRole():“将用户添加到角色时出错:找不到UserId”?

我一直在尝试使用MVC5 / EF6并尝试使用Code-First Migrations进行新的身份validation。 解决方案中的所有内容当前正在构建,我可以添加Migration ,但是当我通过VS2013中的package manager console执行update-database ,我的Configuration.cs文件无法将我的测试数据完全处理到我的表中并输出Error Adding User to Role: UserId not found 。 我已经尝试显式设置用户ID并让它由Manager生成(如某些示例所示),但每次收到相同的错误消息。 我知道我的Configuration.cs文件的#region User & User Roles中的错误是失败的,但我不确定原因: using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.EntityFramework; using PersonalPortfolio2.Helper; using PersonalPortfolio2.Models; using System; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.Migrations; using System.Diagnostics; using System.Linq; namespace PersonalPortfolio2.Models { public sealed class Configuration : DbMigrationsConfiguration { public Configuration() […]

Asp.Net Identity 2.0自定义角色管理器:实体类型IdentityRole不是当前上下文的模型的一部分

我已在WebForms ASP.NET应用程序中自定义RoleManager,以便在Roles表中集成新字段。 我按照这里给出的说明进行了操作: http : //johnatten.com/2014/06/22/asp-net-identity-2-0-customizing-users-and-roles/ 所以在identitymodels.cs中我添加了: public class ApplicationRole : IdentityRole { public ApplicationRole() : base() { } public ApplicationRole(string name) : base(name) { } public int Level{ get; set; } //this is the new field in the Roles table } 并修改了OnModelCreating方法: protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); // This needs to go […]

Asp.Net Identity Localization PublicKeyToken

我试图通过使用以下post的建议来获取瑞典语对Asp.Net Identity的本地化错误消息: 如何本地化ASP.NET Identity UserName和Password错误消息? 使用NuGet我下载了德语语言包,然后在dotPeek中打开\ packages \ Microsoft.AspNet.Identity.Core.2.0.0 \ lib \ net45 \ de \ Microsoft.AspNet.Identity.Core.resources.dll,然后将其导出到一个新的VS项目: https://github.com/nielsbosma/AspNet.Identity.Resources.Swedish/ 我已将生成的\ Microsoft.AspNet.Identity.Core.resources.dll复制到\​​ packages \ Microsoft.AspNet.Identity.Core.2.0.0 \ lib \ net45 \ se下的新文件夹。 当我在本地运行我的网站时,我看到Microsoft.AspNet.Identity.Core.resources.dll已被复制到MySite \ bin \ sv \ 但我不能让它工作:( 如果我在我的Web.config中设置: … 我仍然得到英文默认错误消息。 但如果我改为德语,我已经从NuGet中包含了我收到德语错误消息。 使用dotPeek我将我的dll与德语进行了比较,除了我的PublicKeyToken = null和德语为“31bf3856ad364e35”之外,它们是相同的。 这可能是我无法加载我的DLL的原因吗? 无论如何为dll设置PublicKeyToken? 任何解决方法? 谢谢你的任何指示。