Cookies 在持久cookie登录期间调用什么处理程序/方法?

Cookies 在持久cookie登录期间调用什么处理程序/方法?,cookies,asp.net-mvc-5,asp.net-identity,Cookies,Asp.net Mvc 5,Asp.net Identity,我有一个配置了ASP.NET标识并使用本地帐户选项的项目。我已经修改了上下文来收集额外的数据,一切都很好。其中一个字段用于存储用户LastLoginDate,该数据在登录的Post ActionResult中设置 问题是,在用户选择“记住我”选项后,没有一个常用的处理程序或方法被命中。我已经试着找到了它们,但是找不到,所以我假设有一个方法需要重写。在此方面的任何帮助都将不胜感激 谢谢 当您使用本地帐户时,当用户登录时,OWIN将创建一个名为.AspNet.ApplicationCookie的co

我有一个配置了ASP.NET标识并使用本地帐户选项的项目。我已经修改了上下文来收集额外的数据,一切都很好。其中一个字段用于存储用户LastLoginDate,该数据在登录的Post ActionResult中设置

问题是,在用户选择“记住我”选项后,没有一个常用的处理程序或方法被命中。我已经试着找到了它们,但是找不到,所以我假设有一个方法需要重写。在此方面的任何帮助都将不胜感激


谢谢

当您使用本地帐户时,当用户登录时,OWIN将创建一个名为.AspNet.ApplicationCookie的cookie。 此cookie将存储在浏览器中。 cookie将设置为在浏览器会话结束时过期,如果用户选择“记住我”选项,则默认设置为登录后14天。 如果浏览器中存在cookie且未过期,则用户已登录,无需登录。我想这就是你所看到的,也就是说,用户根本不登录,因为默认值是14天和滑动到期,这意味着选择“记住我”并至少每14天使用一次站点的用户将保持登录状态

您可以通过向在Startup.Auth.cs中初始化的CookieAuthenicationOptions添加选项来更改默认值。例如,要将cookie的到期日设置为一周,而不使用滑动到期日,您可以执行以下操作:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
      LoginPath = new PathString("/Account/Login"),
      ExpireTimeSpan = new TimeSpan(7, 0, 0, 0),
      SlidingExpiration = false
});

当您使用本地帐户时,当用户登录时,OWIN将创建一个名为.AspNet.ApplicationCookie的cookie。 此cookie将存储在浏览器中。 cookie将设置为在浏览器会话结束时过期,如果用户选择“记住我”选项,则默认设置为登录后14天。 如果浏览器中存在cookie且未过期,则用户已登录,无需登录。我想这就是你所看到的,也就是说,用户根本不登录,因为默认值是14天和滑动到期,这意味着选择“记住我”并至少每14天使用一次站点的用户将保持登录状态

您可以通过向在Startup.Auth.cs中初始化的CookieAuthenicationOptions添加选项来更改默认值。例如,要将cookie的到期日设置为一周,而不使用滑动到期日,您可以执行以下操作:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
      LoginPath = new PathString("/Account/Login"),
      ExpireTimeSpan = new TimeSpan(7, 0, 0, 0),
      SlidingExpiration = false
});

谢谢你的回复,非常有帮助。因此,虽然他们有cookie,但在访问时没有调用服务器端方法,对吗?因此,当用户拥有cookie时,无法知道用户何时或多久访问一次站点。这是正确的吗?谢谢。你可以选择不允许“记住我”选项。然后,用户每次完全重新启动浏览器时都必须登录。当然,通常会调用常规操作方法,您可以在此处进行检查。如果您不想删除“记住我”选项,您可以在所有操作方法中进行检查,以查看谁在调用您的方法。例如,您可以覆盖OnActionExecuting并检查用户是否经过身份验证,然后检查用户是谁。太棒了!非常感谢,这就是我要找的。谢谢你的回复,非常有帮助。因此,虽然他们有cookie,但在访问时没有调用服务器端方法,对吗?因此,当用户拥有cookie时,无法知道用户何时或多久访问一次站点。这是正确的吗?谢谢。你可以选择不允许“记住我”选项。然后,用户每次完全重新启动浏览器时都必须登录。当然,通常会调用常规操作方法,您可以在此处进行检查。如果您不想删除“记住我”选项,您可以在所有操作方法中进行检查,以查看谁在调用您的方法。例如,您可以覆盖OnActionExecuting并检查用户是否经过身份验证,然后检查用户是谁。太棒了!非常感谢,这就是我要找的。