要学习Asp.Net Identity我一直在使用Microsoft提供的Identity Samples模板,该模板可以通过NuGet下载。
https://www.nuget.org/packages/Microsoft.AspNet.Identity.Samples/2.1.0-alpha1
包管理器控制台中的OR运行:
安装包Microsoft.AspNet.Identity.Samples -Pre
请注意
此示例与Visual Studios附带的示例不同。 VS附带的产品仍使用Identity V1.0,NuGet上的软件包使用V2.1。因此,我没有在VS示例中仅验证NuGet的这种行为。
我的简单问题是,为什么DbContext实例(ApplicationDbContext)在我加载的每个页面上调用,而不仅仅是使用数据库的页面/操作?
例如,如果我在ApplicationDbContext方法上放置一个断点,然后从Index页面导航到Contact页面,或者从Index页面导航到Index页面,甚至导航到我创建的随机测试页面,则会触发DBContext方法并运行所有UserManager,RoleManager和SignInManager代码。
这是正常的吗?返回与DB无关的视图似乎还有很多额外的工作......
答案 0 :(得分:0)
Identity有一个配置选项来检查cookie - 如果它仍然有效。不确定您下载的nuget的默认值是什么,但您可以在App_Start\Startup.Auth.cs
中更改它,查找如下代码:
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>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
您需要检查validateInterval
参数,如果时间非常短,请将其设置为10-15分钟。
有关完整的示例文件,请参阅here。