gpt4 book ai didi

c# - 获取用户上次访问时间

转载 作者:太空宇宙 更新时间:2023-11-03 14:56:38 25 4
gpt4 key购买 nike

我正在为我的 asp.net 核心 API 使用 IdentityServer 4(带有 sql 存储)。我想在数据库中的某处添加一个“上次访问”字段,该字段可用于在用户搜索端点中对我的一种用户类型进行排序。理想情况下,这将显示他们上次在系统中执行操作的时间。

如果我在登录方法中执行此操作,它将不准确,因为它只会在最初生成 token 时更新。我可以为用户访问的每个端点添加一个方法,但这感觉不是正确的解决方案,因为它会重复我自己。

维护记录用户上次访问系统的数据库字段的正确位置和方法是什么?

最佳答案

为了记录用户事件时间,您可以尝试为每个请求调用的中间件。
以下是步骤。
1.在ApplicationUser中添加字段,用于存储上次访问的时间

public class ApplicationUser : IdentityUser
{
public DateTime LastAccessed { get; set; }
}

2.运行命令add-migration LastAccessedupdate-database
3.添加中间件根据用户名更新上次访问时间

        app.UseAuthentication();
app.Use(async (context, next) => {
await next.Invoke();
//handle response
//you may also need to check the request path to check whether it requests image
if (context.User.Identity.IsAuthenticated)
{
var userName = context.User.Identity.Name;
//retrieve uer by userName
using (var dbContext = context.RequestServices.GetRequiredService<ApplicationDbContext>())
{
var user = dbContext.ApplicationUser.Where(u => u.UserName == userName).FirstOrDefault();
user.LastAccessed = DateTime.Now;
dbContext.Update(user);
dbContext.SaveChanges();
}
}
});

关于c# - 获取用户上次访问时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48717661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com