如何在MVC 5中使用.NET Identity 2.0获取在线用户数量

7

您知道如何使用.NET Identity 2.0成员提供程序在MVC 5中获取在线用户数量吗?

我已经扫描了Identity示例中提供的UserManager方法,但没有帮助。


3
ASP.NET Identity没有提供获取在线用户数量的函数,你需要自己实现逻辑。 - meziantou
1个回答

4

这应该能够准确地显示用户数量。它使用缓存来存储用户的IP地址,并返回一个独立IP的数量计数。如果两个人在同一代理后面,它将把它视为一个人。

using System.Runtime.Caching;

public int UsersOnlineCount
{
    get
    {
        return MemoryCache.Default.Where(kv => kv.Value.ToString() == "User").Count();
    }
}

确保每个人都被添加到缓存的最好方法是在构造函数中定义一些BaseController...

public BaseController() : base() 
{
    CacheItemPolicy policy = new CacheItemPolicy();
    policy.AbsoluteExpiration = DateTime.UtcNow.AddMinutes(20);

    MemoryCache.Default.Add(System.Web.HttpContext.Current.Request.UserHostAddress, "User", policy);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接