Asp.net mvc 5 是否可以计算用户在没有单独计数器的情况下登录MVC5的次数?

Asp.net mvc 5 是否可以计算用户在没有单独计数器的情况下登录MVC5的次数?,asp.net-mvc-5,asp.net-identity,Asp.net Mvc 5,Asp.net Identity,在ASP.NET Identity中,是否可以计算用户执行登录操作的次数,而不在单独的数据表中保留计数?例如,我可以设置一个数据表之类的 [Table("LoginInfo")] public class LoginCount() { public int UserId {get; set;} public int counter{get; set;} ... //other applicable parameters such as date, time, location etc. } 但

在ASP.NET Identity中,是否可以计算用户执行登录操作的次数,而不在单独的数据表中保留计数?例如,我可以设置一个数据表之类的

[Table("LoginInfo")]
public class LoginCount()
{
public int UserId {get; set;}
public int counter{get; set;}
...
//other applicable parameters such as date, time, location etc.
}

但是,使用默认标识数据表是否可以实现这一点?还有一种方法可以知道这是否是用户注册后的第一次处女登录吗?

绝对有可能。如果您使用的是实体框架实现,这实际上非常简单

首先,向应用程序模型中添加一个LoginCount。实体框架将把该列放在
aspnet\u users
表中

public class ApplicationUser : IdentityUser
{
    public int LoginCount { get; set; }
}
现在它已在您的模型中,您所需要做的就是确保在用户登录时增加它:

通过向AccountController的登录方法添加一些代码:

user.LoginCount += 1;
UserManager.Update<ApplicationUser>(user);
user.LoginCount+=1;
UserManager.Update(用户);
它可能看起来有点像:

    //
    // POST: /Account/Login
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            var user = await UserManager.FindAsync(model.UserName, model.Password);
            if (user != null)
            {
                await SignInAsync(user, model.RememberMe);

                user.LoginCount += 1;
                UserManager.Update<ApplicationUser>(user);

                return RedirectToLocal(returnUrl);
            }
            else
            {
                ModelState.AddModelError("", "Invalid username or password.");
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }
//
//POST:/帐户/登录
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务登录(LoginView模型,字符串返回URL)
{
if(ModelState.IsValid)
{
var user=await UserManager.FindAsync(model.UserName,model.Password);
如果(用户!=null)
{
等待符号同步(用户,model.RememberMe);
user.LoginCount+=1;
UserManager.Update(用户);
返回重定向到本地(returnUrl);
}
其他的
{
AddModelError(“,“无效的用户名或密码”);
}
}
//如果我们走到这一步,有些东西失败了,重新显示形式
返回视图(模型);
}
如果您特别希望它转到另一个表,则无需使用任何魔法,只需在ApplicationUser模型中使用标准的Code First Lovelity即可

享受

保罗