2017-01-18 3 views
0

Derzeit Lerninhalte mit MVC und zum Zeitpunkt des Hinzufügens eines Anmeldebildschirms, bevor die Benutzer das Site-Menü durchsuchen können. Ich googeln um und fand einen Weg, die Authentifizierung, die nur durch das Hinzufügen dieses auf dem Homecontroller hinzuzufügen:MVC Login-Bildschirm wird immer angezeigt, wenn Seiten gewechselt werden

[Authorize] 

Ich habe diese auf web.config auch:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="2880"/> 
</authentication> 

Nun ist die Anmeldung funktioniert, aber Sobald ich die Seite (n) ändere, wird erneut nach einem Login gefragt und es wird nicht auf die Seite umgeleitet, auf der ich zuletzt war.

Wie ist es, die protokollierte Benutzersitzung in MVC beizubehalten?

EDIT: Code für die Login

//Login 
    public ActionResult Login() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Login(UserAccount user) 
    { 
     using (OurDbContext db = new OurDbContext()) 
     { 
      var usr = db.userAccount.Single(u => u.Username == user.Username && user.Password == user.Password); 
      if (usr != null) 
      { 
       Session["UserID"] = usr.UserID.ToString(); 
       Session["Username"] = usr.Username.ToString(); 
       return RedirectToAction("Index"); 
      } 
      else 
      { 
       ModelState.AddModelError("", "Username or Password is wrong."); 
      } 
     } 
     return View(); 
    } 
    public ActionResult LoggedIn() 
    { 
     if (Session["UserId"] != null) 
     { 
      return View(); 
     } 
     else 
     { 
      return RedirectToAction("Login"); 
     } 
    } 
+0

Zeigen Sie Ihre Code für die Login-Methoden –

+0

@StephenMuecke Ok Ich habe es über – OreoFanatics

+0

hinzugefügt. Sie fügen die Details nicht zu 'Session' hinzu. Und sicher speichern Sie Passwörter nie im Klartext in einer Datenbank (Sie hash sie). Ich schlage vor, Sie gehen auf die MVC-Website und arbeiten durch die Tutorials, in den Abschnitten über [Sicherheit, Authentifizierung und Autorisierung] (https://www.asp.net/mvc/overview/security) –

Antwort

0

Sie müssen folgende Zeilen hinzufügen Authentifizierungsticket zu setzen für aktuelle Sitzung in Ihrem if (usr! = Null) {} Bedingung

FormsAuthentication.SetAuthCookie(usr.UserID.ToString(), false); 
+0

Ich erhalte den Fehler "FormsAuthentication existiert nicht im aktuellen Kontext". Soll ich zuerst etwas importieren? – OreoFanatics

+0

Fügen Sie den Verweis "using System.Web.Security" hinzu. – LKC

+0

danke :) Wissen Sie nicht in Bezug auf die Verwendung von "userDbEntities"? – OreoFanatics

Verwandte Themen