如何使用SimpleMembership节省上次登录的时间?
我需要节省用户登录时的时间 首先,我尝试在AccountController登录中实现它。但现在我知道,这是不可能的,因为User.Id是-1 好的,我可以做些什么来节省用户表中的时间 我的下一个问题是,什么时候做。我需要获取用户的信息是在重定向后创建的。重定向可以无处不在 一个想法是,获取ASPXAUTH cookie设置的时间,但我不知道如何获取它如何使用SimpleMembership节省上次登录的时间?,simplemembership,Simplemembership,我需要节省用户登录时的时间 首先,我尝试在AccountController登录中实现它。但现在我知道,这是不可能的,因为User.Id是-1 好的,我可以做些什么来节省用户表中的时间 我的下一个问题是,什么时候做。我需要获取用户的信息是在重定向后创建的。重定向可以无处不在 一个想法是,获取ASPXAUTH cookie设置的时间,但我不知道如何获取它 有什么解决方案吗?如果您只需要最后一次登录,您可能会收到SimpleMembership提供的信息: var User = Membership
有什么解决方案吗?如果您只需要最后一次登录,您可能会收到SimpleMembership提供的信息:
var User = Membership.GetUser("Username") // get user by name
DateTime LastActivityDate = User.LastActivityDate; // get last activity date and time
DateTime LastLogin = User.LastLoginDate; // Last login date and time
DateTime LastPasswordChange = User.LastPasswordChangedDate;
我只是自己学的 您需要在
AccountModel.cs
例如,我在UserProfile表生成中添加了电子邮件
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
}
public string Email { get; set; }
我还需要将它添加到文件后面的RegisterModel中
public class RegisterModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[Display(Name = "Email Address")]
public string Email { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
这里的重要部分是这个新条目:
[Required]
[Display(Name = "Email Address")]
public string Email { get; set; }
然后我需要将电子邮件信息添加到RegisterView,这与使用其他部分完全相同,因为它现在是模型的一部分
当您将信息保存回数据库时,最重要的部分之一就出现了。在我的注册操作中,我有一个已经定义的WebSecurity.CreateUserAndAccount
方法。但是,它需要调整,以便能够使用此方法向数据库添加额外信息
谢天谢地,其中一个重载允许将字典传递给额外的数据
WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { Email = model.Email }, false);
new { Email = model.Email }
如果您还没有在数据库中添加该列,我认为它不会接收该列。您需要确保该列存在,因此需要事先设置它。您需要扩展您的userprofile模型。您想要用户上次登录或上次联机的时间吗?userprofile,my table,包含我需要的所有字段,但我不知道何时以及如何填写。因为我使用表单身份验证,所以需要时间才能成功登录。您使用的是MembershipProvider还是SimpleMembershipProvider?谢谢,我已经尝试过了。在此之前,我查看了数据库,没有找到LastActivityDate或LastLoginDate的列。因此,LastActivityDate和LastLoginDate都是DateTime.MinValue也就不足为奇了。我没有发现任何东西,SimpleMembership(MVC 4)使用了所有成员资格功能。@user2784409您的数据库中有aspnet_成员资格表吗?它包含所有这些字段。
SimpleMembershipProvider
使用webpages\u成员资格。我有一个名为webpages\u成员资格的表,其中只包含用户ID、确认和6个密码字段,而不是您要求的列。这是开箱即用的。