Tag: asp.net identity

身份2.1 – 未找到UserId但之前正在使用

此代码在很多次之前有效,但在为Identity 2.1中的用户添加了几个新属性后,它已经停止工作。 我收到UserId未找到错误,尽管在UserId的调试器中可以看到值。 任何人都知道为什么会突然发生这种情况? 至少看到它是非常令人沮丧的。 这是代码:(控制器) // POST: /Account/Register [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task Register(RegisterViewModel model) { model.BackgroundOnFile = false; if (ModelState.IsValid) { var userDetails = new ApplicationUser { UserName = model.Email, Title = model.Title, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, LEAID = model.LEAID, SchoolID = model.SchoolID, Address1 = model.Address1, Address2 […]

IDbSet 上没有FindAsync()方法

有没有理由从IDbSet接口中省略FindAsync()方法? Find是界面的一部分,异步版本不可用似乎很奇怪。 我需要DbSet转换为DbSet来访问它,这有点麻烦: User user = await ((DbSet)db.Users) .FindAsync(“de7d5d4a-9d0f-48ff-9478-d240cd5eb035”);

需要将Asp.Net Identity(RTM)用户ID从nvarchar(128)更改为uniqueidentifier

使用Asp.Net Identity 1.0(RTM版本)。 默认实现创建一个AspNetUsers表。 Id列类型为nvarchar(128)。 在创建数据库和表时,我只想将User Id的类型更改为uniqueidentifier而不是nvarchar(128)。 我在OnModelCreating覆盖中使用.HasColumnType(“uniqueidentifier”)尝试了这个…但是它会抛出错误。 微软表示这很容易……但我倾向于不同意…… http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity 由于您控制数据库架构,因此很容易执行常见任务,例如更改表名或更改主键的数据类型。 因此,根据他们非常简短和完全非技术性的文档,这似乎是一个常见的任务,改变主键的数据类型……但似乎没有任何简单的事情。 请帮忙。

使用Azure AD时,将用户重定向到自定义登录页面

我正在使用以下代码示例将Azure AD登录插入我的应用程序( https://github.com/AzureADSamples/WebApp-OpenIDConnect-DotNet )。 我发现代码工作得很好,但是如果用户还没有登录或者他们的会话已经过期,我希望能够将用户重定向到自定义登录页面。 然而,我正在努力让这个工作,并想知道这是否确实可行? 是否按设计将用户始终重定向到Azure AD的Microsoft登录页面而不是您自己的自定义页面,或者是否有我错过的设置? 我修改了FilterConfig.cs提供的代码以启用Authorizefilter属性: filters.Add(new AuthorizeAttribute()); 我还在web.config添加了以下内容,但没有效果: 在Startup.Auth.cs文件中,我看不到app.UseOpenIdConnectAuthentication可以进行的任何更改,以允许我设置通用登录页面,因为我可能使用基于cookie的身份validation。

ASP.Net Identity 2.0 AccessFailedCount不递增

昨晚我正在使用FormsAuthentication开发一个新项目,并且正在自定义票证以包含安全令牌,因此如果用户在一个浏览器中注销,则会在所有这些注册表中注销。 在查看ASP.net Identity的最新版本时,看起来它已经内置了这个function。 我创建了一个新的测试MVC 5 Web应用程序,启用了个人帐户。 注册和身份validation开箱即用。 但是,我注意到失败的登录尝试没有增加AspNetUsers表中的AccessFailedCount字段。 由于这不会增加,我可以尝试尽可能多的失败登录尝试,而不会让帐户被锁定。 如何在ASP.net Identity 2.0上启用AccessFailedCount和Lockoutfunction?

Asp.net Identity使用密码和Azure Active Directory身份validation

我正在使用Asp.net Identity(OWIN)构建ASP.NET MVC 5网站,并希望支持传统的用户名/密码身份validation以及针对Azure Active Directory的身份validation。 此应用程序无需针对Microsoft ID(Live ID),Facebook,Twitter或任何其他外部提供程序进行身份validation。 我找到的最接近的SO问题是: 如何在ASP.NET MVC上执行Azure Active Directory单点登录和表单身份validation 我查看了使用“个人用户帐户”选项以及VS 2015中的“工作和学校帐户”选项创建项目时创建的示例。我的身份validation工作正常; 只有当我尝试将它们结合起来时,我才遇到问题。 在我的Startup_Auth.cs文件中,我正在配置OWIN,如下所示: public void ConfigureAuth(IAppBuilder app) { app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); //app.UseCookieAuthentication(new CookieAuthenticationOptions { }); app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ExternalCookie, LoginPath = new PathString(“/account/sign-in”) }); app.UseOpenIdConnectAuthentication( new OpenIdConnectAuthenticationOptions { ClientId = clientId, Authority = authority, TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters { ValidateIssuer […]

在实现自己的IUserStore时,类上的“可选”接口实际上是可选的吗?

我正在使用Microsoft的Asp.Net Identity框架版本2,并且正在实现我自己的IUserStore。 我的新类MyUserStore实现了IUserStore接口和IUserPasswordStore ,这是将它与UserManager类一起使用所需的。 或者至少这是我从阅读教程中收集的内容,如下所示 : “身份系统中所需的一个接口是IUserStore” – Scott Allen 但是,当我运行代码时,情况似乎并非如此。 我初始化我的经理: var uMan= new UserManager(new MyUserStore()); var sMan = new SignInManager(uMan,authCtxFromOwin); 当执行SignInManager上的sMan.PasswordSignIn(…)时,无论如何,SignInManager始终在UserManager中运行依赖于可选接口的function。 以下是SignInManager类中PasswordSignInAsync方法的来源: public virtual async Task PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout) { … if (await UserManager.IsLockedOutAsync(user.Id).WithCurrentCulture()) { return SignInStatus.LockedOut; } if (await UserManager.CheckPasswordAsync(user, password).WithCurrentCulture()) { return await SignInOrTwoFactor(user, isPersistent).WithCurrentCulture(); } […]

实体类型IdentityUser不是当前上下文的模型的一部分

我看到了与这个问题相同的问题,但那里提出的情景似乎并不适用所以我认为我有一个不同的问题。 事实上,我在SO上看到几个相似的问题,每个问题都有不同的原因和解决方案,所以我认为这个错误必须从高水平引起。 那说…… 我有一个EF代码优先数据库模型,我正在尝试使用IdentityUser扩展我的MVC 5站点的标准注册。 我有我的扩展UserModel : namespace MyMvcSite.Models { public class UserModel :IdentityUser { public string BillingId { get; set; } public virtual ICollection Databases { get; set; } } 我的背景: using MyMvcSite.Models; namespace MyMvcSite.Web { public class AuthContext : IdentityDbContext { public AuthContext() : base(“AuthContext”) { } } } 现在,当我执行代码注册用户时: public async Task […]

检查用户是否在asp.net mvc Identity中扮演角色

我在使用用户和角色为数据库播种时遇到了问题。 创建了用户和角色(我可以在抛出错误后在数据库中看到它们)。 但是,当我尝试检查用户是否在角色中时,我得到一个例外。 我的代码是: public class tbInitializer : DropCreateDatabaseAlways { protected override void Seed(tbContext context) { ApplicationDbContext userscontext = new ApplicationDbContext(); var userStore = new UserStore(userscontext); var userManager = new UserManager(userStore); var roleStore = new RoleStore(userscontext); var roleManager = new RoleManager(roleStore); if(!userscontext.Users.Any(x=> x.UserName==”marktest”)) { var user = new ApplicationUser { UserName = “marktest”, Email = […]

ASP.NET标识“基于角色”的声明

我知道我可以使用声明来声明用户: var claims = new List(); claims.Add(new Claim(ClaimTypes.Name, “Peter”)); claims.Add(new Claim(ClaimTypes.Email, “peter@domain.com”)); 但是,我应该如何存储“基于角色”的声明? 例如: 用户是超级管理员。 claims.Add(new Claim(“IsSuperAdmin, “true”)); 值参数“true”感觉完全冗余。 如何使用索赔表达此陈述?