我需要限制用户登录到像5或6最大限制数字.使用退出的用户不算数.
这是针对ASP.NET Core7和使用JWT的.
我试图为在线用户创建一些SQL表,但没有找到任何解决方案.主要的问题是如何获得在线客户.
我需要限制用户登录到像5或6最大限制数字.使用退出的用户不算数.
这是针对ASP.NET Core7和使用JWT的.
我试图为在线用户创建一些SQL表,但没有找到任何解决方案.主要的问题是如何获得在线客户.
对于用户跟踪: 您可以在数据库中创建一个表来存储有关活动用户会话的信息.该表应包括UserID、Token、LastActivityTime等字段.
CREATE TABLE ActiveSessions (
Id INT PRIMARY KEY IDENTITY(1,1),
UserId INT,
Token NVARCHAR(MAX),
LastActivityTime DATETIME
);
然后是用于跟踪的中间件: 这用于跟踪用户活动并更新数据库中的LastActivityTime.
public class SessionTrackingMiddleware
{
private readonly RequestDelegate _next;
public SessionTrackingMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context, YourDbContext dbContext)
{
// Update the LastActivityTime in the database for the current user session
// You need to extract UserId and Token from the JWT or other authentication mechanism
var userId = GetUserIdFromContext(context);
var token = GetTokenFromContext(context);
var session = dbContext.ActiveSessions.FirstOrDefault(s => s.UserId == userId && s.Token == token);
if (session != null)
{
session.LastActivityTime = DateTime.Now;
dbContext.SaveChanges();
}
await _next(context);
}
}
然后,您可以编写用于限制并发登录的类.并确保在Startup.cs的Configure方法中注册了SessionTrackingMiddleware.
app.UseMiddleware<SessionTrackingMiddleware>();