- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在注册用户和登录后,我收到 UserId not found 错误。此外,注册后,数据将保存到数据库和 dbo.AspNetUsers 表中,id 列自动递增,返回类型为 int。AspNetUserClaims 表中有 UserId 列。它有 4 Col---Id、UserId、ClaimType、ClaimValue。它的 Id 列自动递增,而不是 userId。我最初通过以下链接成功地将主键从 string 更改为 int --- http://www.asp.net/identity/overview/extensibility/change-primary-key-for-users-in-aspnet-identity .
它之前运行成功,但现在它在这一行给我错误---
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser, int> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
异常详细信息:System.InvalidOperationException:找不到 UserId。这是完整的堆栈跟踪。你可以在这里看到----http://pastebin.com/0hp5eAnp
它之前工作正常,但现在当我添加与其他表的外键关系时,我不知道那里缺少什么。在数据库中,所有表都已正确创建,它们之间的关系也正确,但这里缺少一些东西。
我的ApplicationUser类是这样的-----
public class ApplicationUser : IdentityUser<int, CustomUserLogin, CustomUserRole, CustomUserClaim>
{
public ApplicationUser()
{
this.Posts = new HashSet<Post>();
}
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public virtual ICollection<Post> Posts { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser, int> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
public class CustomUserRole : IdentityUserRole<int> { }
public class CustomUserClaim : IdentityUserClaim<int> { }
public class CustomUserLogin : IdentityUserLogin<int> { }
public class CustomRole : IdentityRole<int, CustomUserRole>
{
public CustomRole() { }
public CustomRole(string name) { Name = name; }
}
public class CustomUserStore : UserStore<ApplicationUser, CustomRole, int,
CustomUserLogin, CustomUserRole, CustomUserClaim>
{
public CustomUserStore(ApplicationDbContext context)
: base(context)
{
}
}
public class CustomRoleStore : RoleStore<CustomRole, int, CustomUserRole>
{
public CustomRoleStore(ApplicationDbContext context)
: base(context)
{
}
}
我的 IdentityConfig.cs 类文件是这样的 ------
// Configure the application user manager used in this application. UserManager is defined in ASP.NET Identity and is used by the application.
public class ApplicationUserManager : UserManager<ApplicationUser, int>
{
public ApplicationUserManager(IUserStore<ApplicationUser, int> store)
: base(store)
{
}
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
var manager = new ApplicationUserManager(new CustomUserStore(context.Get<ApplicationDbContext>()));
// Configure validation logic for usernames
manager.UserValidator = new UserValidator<ApplicationUser, int>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
// Configure validation logic for passwords
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 1,
//RequireNonLetterOrDigit = true,
//RequireDigit = true,
//RequireLowercase = true,
//RequireUppercase = true,
};
// Configure user lockout defaults
manager.UserLockoutEnabledByDefault = true;
manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5);
manager.MaxFailedAccessAttemptsBeforeLockout = 5;
// Register two factor authentication providers. This application uses Phone and Emails as a step of receiving a code for verifying the user
// You can write your own provider and plug it in here.
manager.RegisterTwoFactorProvider("Phone Code", new PhoneNumberTokenProvider<ApplicationUser, int>
{
MessageFormat = "Your security code is {0}"
});
manager.RegisterTwoFactorProvider("Email Code", new EmailTokenProvider<ApplicationUser, int>
{
Subject = "Security Code",
BodyFormat = "Your security code is {0}"
});
manager.EmailService = new EmailService();
manager.SmsService = new SmsService();
var dataProtectionProvider = options.DataProtectionProvider;
if (dataProtectionProvider != null)
{
manager.UserTokenProvider =
new DataProtectorTokenProvider<ApplicationUser, int>(dataProtectionProvider.Create("ASP.NET Identity"));
}
return manager;
}
}
// Configure the application sign-in manager which is used in this application.
public class ApplicationSignInManager : SignInManager<ApplicationUser, int>
{
public ApplicationSignInManager(ApplicationUserManager userManager, IAuthenticationManager authenticationManager)
: base(userManager, authenticationManager)
{
}
public override Task<ClaimsIdentity> CreateUserIdentityAsync(ApplicationUser user)
{
return user.GenerateUserIdentityAsync((ApplicationUserManager)UserManager);
}
public static ApplicationSignInManager Create(IdentityFactoryOptions<ApplicationSignInManager> options, IOwinContext context)
{
return new ApplicationSignInManager(context.GetUserManager<ApplicationUserManager>(), context.Authentication);
}
}
我已经看过很多 stackoverflow 答案,但没有让它发挥作用。有人可以看看缺少什么吗,我现在应该做什么。提前致谢。在这里,在 applicationUser 类的 Id 列中,它在工具提示中显示一些警告和消息,如下所示 ----- models.ApplicationUSer.ID 隐藏继承成员 Microsoft.Aspnet.Identity.EntityFramework.IDentity 用户身份。使当前成员覆盖该实现,否则添加 override 关键字添加新关键字,其中 x 只是命名空间。
我的App_Start文件夹中的StartUp.Auth.cs是这样的-----
public partial class Startup
{
public void ConfigureAuth(IAppBuilder app)
{
// Configure the db context, user manager and signin manager to use a single instance per request
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
// Enable the application to use a cookie to store information for the signed in user
// and to use a cookie to temporarily store information about a user logging in with a third party login provider
// Configure the sign in cookie
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser, int>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager), getUserIdCallback:(id)=>(id.GetUserId<int>()))
}
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
// Enables the application to temporarily store user information when they are verifying the second factor in the two-factor authentication process.
app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));
// Enables the application to remember the second login verification factor such as phone or email.
// Once you check this option, your second step of verification during the login process will be remembered on the device where you logged in from.
// This is similar to the RememberMe option when you log in.
app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);
// Uncomment the following lines to enable logging in with third party login providers
//app.UseMicrosoftAccountAuthentication(
// clientId: "",
// clientSecret: "");......................................................................
我的startUp.cs文件是这样的----
[assembly: OwinStartupAttribute(typeof(WebApp.Startup))]
namespace WebApp
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
}
}
最佳答案
您将必须拿出您的 ApplicationUserManager 使其美观、干净并实现更多方法...例如,请参阅以下帖子(它使用您的自定义键(示例中的 TKey)实现了所有方法:
您将看到您收到的错误 GetSecurityStampAsync 也已在那里实现。
关于asp.net-mvc-5 - 在GenerateUserIdentityAsync方法的aspnet Identity中找不到UserId错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33455346/
我已将 userid 声明为全局变量,并在函数内部为 userid 赋值并声明了一个新函数 userid()但总是在内部函数声明之前返回。为什么我无法更改全局变量。 var userid = 'tes
在 Go 中,我看到一些人像这样定义符号(方法、变量等):UserID、GetSomeURL() 以及 ids、urls 的大写字母,等 这是标准方式吗? 甚至我使用 go-lint 的编辑器也会警告
我希望获取用户在其工作站上处理每个批处理的总时间、已完成的预计总工作量、用户获得的报酬以及用户今年每天发生的故障次数。如果我可以将所有这些连接到一个查询中,那么我可以在 Excel 中使用它,并在数据
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 4 年前。 Improve this qu
我看到一个可重复的问题,用户使用 Meteor 服务器进行身份验证(“登录”),然后是依赖于 userId 的客户端订阅在之前更新(并且相关 UI 模板 react 性更新)Meteor.userId
从this comment来看作者:David Glasser 在 GitHub 问题中: this.userId is the primary API and Meteor.userId() is
我正在跟踪 Discover Meteor tutorial在提交 8-1 之后我们添加: // Check that the userId specified owns the documents
我只想能够在 document.ready 函数中访问变量 userid 。它可以在 JSP 页面中访问,但不能在 jQuery 中访问。我可以在同一个 JSP 页面上打印 ${userid} 的值,
我想从这个表中查询如下图 Table Image并更新从一行中选择不同 TestType、UserID 的值并将该值设置为 Final_Test_Score 列和 GROUP BY UserID我想要
两种模型“代理”和“代理”。每个都与我的“用户”模型相关联。我为每个模型指定了“user_id”的“foreignKey”。但是,Sequelize 会为一个模型在“user_id”之外创建一个“us
当用户访问我的网站时,他们单击“添加”或“删除”项目...“添加”或“删除”消息有时与应有的内容相反。例如,当您单击按钮时,它会改变颜色。如果值不是“Y”,则为灰色;如果为“Y”,则为红色。有时它是相
我被困住了,我现在知道如何提出我的问题,所以我用我想要的结果创建了一个假设场景。 我正在尝试创建一个查询,计算每个用户 ID 的水果数量,但记录水果为香蕉的用户 ID 除外。 +----------+
为了将此问题归结为基本问题和最少的代码,我创建了一个简单的新 meteor 应用程序,添加了 accounts-password打包并添加以下代码片段。我的数据库中有一个测试用户。 Meteor.me
我想通过用户的 userId 参数获取用户,但它不起作用。该应用程序连接到数据库(Atlas),我可以创建用户,批量检索它们,但我无法使用特定参数(在本例中为 UserId)检索它们,从而产生未找到错
我有点犹豫,我很想知道其他人在相同情况下的决定。 要从 RESTful API 获取由 :userId 标识的用户的 resourceType 列表,如果我有可寻址的资源,哪种 URI 模式最有意义作
我正在创建一个在线类(class)系统,因此我创建了下表 表名称=用户 -Columns: 1.userid 2.full name 3.email
我有一个表,其中包含 userId 及其一个具有长文本的属性。如下, 该表包含大约 200 万行,需要为给定的 userId 选择行(并且 userId 为 NULL 的所有行)。由于UserId为N
我是一名刚学数据库的学生... 我有两张 table 。用户和行程。 每当将新的行程添加到数据库时,我希望它触发“totalMiles”列中用户表的更新。我希望它采用 Trip.userID 并仅更改
我将 ID 列表存储在字段中(列表是指 val1,val2,val3,...),我想从表中选择行,其中该字段在列表中有 valX . 我以为这行得通,但显然行不通:( SELECT * FROM
这个问题在这里已经有了答案: ES6/ES2015 object destructuring and changing target variable (1 个回答) 去年关闭。 例如 state
我是一名优秀的程序员,十分优秀!