Asp.net mvc 5 是否可以计算用户在没有单独计数器的情况下登录MVC5的次数?
在ASP.NET Identity中,是否可以计算用户执行登录操作的次数,而不在单独的数据表中保留计数?例如,我可以设置一个数据表之类的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. } 但
[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即可
享受
保罗