Asp.net mvc 存储用户上次登录信息的良好设计模式是什么?
我正在设计一个功能,用于在ASP.Net(MVC)应用程序中存储上次登录日期/时间 我的第一反应是根据用户的配置文件记录将值存储在数据库中,并在成功登录时将值更新为当前日期/时间。当然,只要我记录了该值,所有页面都将显示此会话成功登录的日期和时间 计划B:记录上一个会话的字段和记录此会话的字段。登录时,将此会话的日期/时间保存到“当前”字段,并将以前在其中找到的值移动到“以前”字段(显然)。此字段提供我的“上次登录”值Asp.net mvc 存储用户上次登录信息的良好设计模式是什么?,asp.net-mvc,authentication,design-patterns,Asp.net Mvc,Authentication,Design Patterns,我正在设计一个功能,用于在ASP.Net(MVC)应用程序中存储上次登录日期/时间 我的第一反应是根据用户的配置文件记录将值存储在数据库中,并在成功登录时将值更新为当前日期/时间。当然,只要我记录了该值,所有页面都将显示此会话成功登录的日期和时间 计划B:记录上一个会话的字段和记录此会话的字段。登录时,将此会话的日期/时间保存到“当前”字段,并将以前在其中找到的值移动到“以前”字段(显然)。此字段提供我的“上次登录”值 这是最好的方法还是可以做得更优雅一些?还有其他几种方法可以做到这一点 您可以
这是最好的方法还是可以做得更优雅一些?还有其他几种方法可以做到这一点
另一种方法是,在登录时,从用户记录中读取上次登录日期/时间,并将其保存到会话或会话cookie中。然后用当前日期/时间更新用户记录。然后在页面上读取会话/cookie中存储的值 当会话到期时(通常是用户需要重新登录时),旧时间将被删除。在从会话/cookie读取时,它还具有速度和缓存的优势 但这取决于你的设置和应用程序,这对你来说是否可行 更新 我只是想说清楚。。。每次用户登录时,都会将当前日期/时间保留到数据库用户表中。但在将日期/时间写入用户表之前,将读取现有值并将其保存到会话或cookie中。然后使用当前时间戳更新用户表中的日期/时间值
如果身份验证票证的有效期长于会话,则使用cookie方法并将cookie的有效期设置为与身份验证票证的有效期相同 创建一个实现此功能的自定义可序列化类怎么样 这样的类可以简单地序列化/反序列化为用户配置文件的blob。除非您需要能够查询上次登录日期,否则这可能是一个很好的解决方案
我的第一个想法是简单地使用一个
堆栈来实现这一点,但尽管它是可序列化的,但它没有提供能够自动收回旧值的钩子。Session\u end仅在proc中存储会话状态时才起作用。这是需要记住的。由于这个原因,我从不使用它。这将是我处理这个问题的方式,它只会保留客户的信息。如果用户在家和下班时登录,则信息将不正确。您需要在服务器上持久化此信息。这不需要在服务器上持久化,因为它在语义上是相同的。登录时,唯一有趣的信息是上一次登录,无论您采取何种方式,它始终存在。@Heiko Hatzfeld-我想您看错了。每次用户登录.@Phil.Wheeler时,每次登录的日期/时间都会保存到用户记录中-然后您只需使用cookie方法,cookie的到期日与身份验证票证的到期日相同。当它过期时,用户需要重新登录,从而创建一个新的上次登录日期/时间cookie。根据需要调整模式。为什么需要存储上一次和当前登录时间?@Charles Conway-只需要最后一次登录日期/时间,但会被当前登录日期/时间覆盖。它可用于诸如“用户上次登录时间为昨天11:52”或“自上次登录后的3个新项目”等功能