如何使用SimpleMembership节省上次登录的时间?

如何使用SimpleMembership节省上次登录的时间?,simplemembership,Simplemembership,我需要节省用户登录时的时间 首先,我尝试在AccountController登录中实现它。但现在我知道,这是不可能的,因为User.Id是-1 好的,我可以做些什么来节省用户表中的时间 我的下一个问题是,什么时候做。我需要获取用户的信息是在重定向后创建的。重定向可以无处不在 一个想法是,获取ASPXAUTH cookie设置的时间,但我不知道如何获取它 有什么解决方案吗?如果您只需要最后一次登录,您可能会收到SimpleMembership提供的信息: var User = Membership

我需要节省用户登录时的时间

首先,我尝试在AccountController登录中实现它。但现在我知道,这是不可能的,因为User.Id是-1

好的,我可以做些什么来节省用户表中的时间

我的下一个问题是,什么时候做。我需要获取用户的信息是在重定向后创建的。重定向可以无处不在

一个想法是,获取ASPXAUTH cookie设置的时间,但我不知道如何获取它


有什么解决方案吗?

如果您只需要最后一次登录,您可能会收到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个密码字段,而不是您要求的列。这是开箱即用的。