Asp.net mvc 5 CookieAuthenticationOptions中的validateInterval过期时会发生什么

Asp.net mvc 5 CookieAuthenticationOptions中的validateInterval过期时会发生什么,asp.net-mvc-5,asp.net-identity,Asp.net Mvc 5,Asp.net Identity,validateInterval超时过期时会发生什么情况? 这是我的身份验证配置 var cookieAuthOptions=新CookieAuthenticationOptions { AuthenticationType=DefaultAuthenticationTypes.ApplicationOkie, LoginPath=新路径字符串(“/Compte/Login”), CookieDomain=“.rdvdoc.fr”, //在航行的最后一刻,饼干就过期了,在饼干有效期内就过期了 E

validateInterval超时过期时会发生什么情况? 这是我的身份验证配置

var cookieAuthOptions=新CookieAuthenticationOptions
{
AuthenticationType=DefaultAuthenticationTypes.ApplicationOkie,
LoginPath=新路径字符串(“/Compte/Login”),
CookieDomain=“.rdvdoc.fr”,
//在航行的最后一刻,饼干就过期了,在饼干有效期内就过期了
ExpireTimeSpan=TimeSpan.FromDays(365),
//这是一次重新接触
slidengexpiration=true,
Provider=新CookieAuthenticationProvider
{
//允许应用程序在计算机登录时验证安全戳。
//这是一种安全功能,在您更改密码或向帐户添加外部登录时使用。
OnValidateIdentity=SecurityStampValidator.OnValidateIdentity(
validateInterval:TimeSpan.FromMinutes(60),
regenerateIdentity:(管理者,用户)=>ApplicationUser.GenerateUserIdentityAsync(用户,管理者))
}
};
我想知道的是:validateidentity超时过期后,将调用GenerateUserIdentityAsync,但提供给它的用户对象来自哪里

  • 它是从数据库中重新提取的吗
  • 它是从cookie数据重新创建的吗
  • 另一种方式

  • 谢谢

    管理器从owin上下文中获取,用户ID从cookie中获取。然后从管理器中提取用户

    ...
    TManager manager = OwinContextExtensions.GetUserManager<TManager>(context.OwinContext);
    ...
    TKey userId = getUserIdCallback(context.Identity);
    ...
    TUser user = await Microsoft.AspNet.Identity.TaskExtensions.WithCurrentCulture<TUser>(manager.FindByIdAsync(userId));
    
    。。。
    TManager=owincontextensions.GetUserManager(context.OwinContext);
    ...
    TKey userId=getUserIdCallback(context.Identity);
    ...
    TUser user=wait Microsoft.AspNet.Identity.TaskExtensions.WithCurrentCulture(manager.FindByIdAsync(userId));
    
    管理器从owin上下文中获取,用户ID从cookie中获取。然后从管理器中提取用户

    ...
    TManager manager = OwinContextExtensions.GetUserManager<TManager>(context.OwinContext);
    ...
    TKey userId = getUserIdCallback(context.Identity);
    ...
    TUser user = await Microsoft.AspNet.Identity.TaskExtensions.WithCurrentCulture<TUser>(manager.FindByIdAsync(userId));
    
    。。。
    TManager=owincontextensions.GetUserManager(context.OwinContext);
    ...
    TKey userId=getUserIdCallback(context.Identity);
    ...
    TUser user=wait Microsoft.AspNet.Identity.TaskExtensions.WithCurrentCulture(manager.FindByIdAsync(userId));
    
    谢谢,如果我在GenerateUserIdentityAsync中添加自定义声明,它们会丢失吗?我之所以这样问,是因为我在声明中输入的信息只有在登录时才可用。如果您的自定义声明设置为
    GenerateUserIdentityAsync
    ,它们将持续存在。这个方法是用来重新生成身份的。我有一个非常特殊的情况,部分用户不是存储在数据库中,而是存储在广告上,我还需要为一些网站功能重用他们的密码,我在检查密码时,求助于将密码存储在passwordhash字段中,然后根据这个值创建一个声明;如果用户被重建,我仍然可以从广告中找到它,但是我不再有密码,声明仍然有效还是重新初始化?如果你不再有密码供参考,那么声明将无效。然而,我很难说,因为
    GenerateUserIdentityAsync
    是您定义的函数。然而,至少可以说,保持密码的整个策略很奇怪。理想的方法是将用户存储在您的应用程序中以及AD中,但在检查凭据时遵从AD。所以本质上是将AD视为第三方身份验证提供商。谢谢,那么如果我在GenerateUserIdentityAsync中添加自定义声明,它们会丢失吗?我之所以这样问,是因为我在声明中输入的信息只有在登录时才可用。如果您的自定义声明设置为
    GenerateUserIdentityAsync
    ,它们将持续存在。这个方法是用来重新生成身份的。我有一个非常特殊的情况,部分用户不是存储在数据库中,而是存储在广告上,我还需要为一些网站功能重用他们的密码,我在检查密码时,求助于将密码存储在passwordhash字段中,然后根据这个值创建一个声明;如果用户被重建,我仍然可以从广告中找到它,但是我不再有密码,声明仍然有效还是重新初始化?如果你不再有密码供参考,那么声明将无效。然而,我很难说,因为
    GenerateUserIdentityAsync
    是您定义的函数。然而,至少可以说,保持密码的整个策略很奇怪。理想的方法是将用户存储在您的应用程序中以及AD中,但在检查凭据时遵从AD。因此,本质上将广告视为第三方身份验证提供商。