2013-01-14 11 views
8

Ich benutze die einfache Mitgliedschaft in meiner asp.net MVC 4-Anwendung. Wie kann ich das letzte Login-Datum von Benutzer erhalten? Ich sehe nicht, dass das Datum in der Schema-Tabelle der Standardwebseiten erstellt wird. Muss ich das Feld für das LastLogin-Datum in einer einfachen Mitgliedschaft erstellen? DankEinfache Mitgliedschaft: Letzte Login-Datum des Benutzers

Antwort

10

Ich habe diese Art und Weise gelöst:

  1. ich ein Lastlogin Feld Userprofile Modell in UsersContext hinzugefügt:

    public ActionResult Login(LoginModel model, string returnUrl) 
    {    
        if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))  
        { 
         using (UsersContext db=new UsersContext())     
         { 
          UserProfile userProfile = db.UserProfiles.SingleOrDefault(u=>u.UserName==model.UserName); 
          userProfile.LastLogin = DateTime.Now; 
          db.Entry(userProfile).State=EntityState.Modified; 
          db.SaveChanges(); 
         } 
    
         return RedirectToLocal(returnUrl); 
        } 
    
        // If we got this far, something failed, redisplay form 
        ModelState.AddModelError("", "The user name or password provided is incorrect."); 
        return View(model); 
    } 
    
    :

    [Table("UserProfile")] 
    public class UserProfile 
    {  
        [Key]  
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
        public int UserId { get; set; } 
        public virtual string UserName { get; set; } 
        public virtual DateTime? LastLogin { get; set; } 
    } 
    
  2. ich die Login-Methode in der Account geändert

  3. Dann habe ich geholt Userprofiles Wie die Art und Weise unten:

    public ActionResult Index() 
    { 
        return View("Index",_db.UserProfiles); 
    } 
    
  4. Schließlich angezeigt I Lastlogin Datetime in Index.cshtml:

    @foreach (var item in Model) 
    { 
        <tr> 
         <td> 
          @Html.DisplayFor(modelItem => item.UserName) 
         </td> 
         <td> 
          @Html.DisplayFor(modelItem => item.LastLogin) 
         </td> 
        </tr> 
    } 
    
+0

Dank Babul Mirdha. Ich werde den gleichen Weg lösen. Ich dachte, es könnte etwas in Single-Mitgliedschaft-Provider ähnlich der Asp.net-Mitgliedschaft sein. In asp.net Mitgliedschaft hat es die letzte Login-Eigenschaft und gibt uns die Rekordaktualisierungen die letzte Anmeldung – Gayatri

+0

Willkommen, Gayatri, ja, Es gibt Lastlogin Eigentum ist Asp.Net Mitgliedschaft. Also habe ich dieses LastLogin Eigentum in SimpleMembership in MVC4 erwartet, aber ich habe es bis jetzt nicht verstanden ..., also habe ich diesen Weg gelöst, Danke. –

+0

Warum wird dieses LastLogin-Feld als "virtuell" deklariert? –

Verwandte Themen