2016-06-27 3 views
0

Ich versuche zu machen, so dass, wenn Benutzer angemeldet mit dem Passwort "tja" in der Datenbank senden Sie ihn auf eine Seite, sonst eine andere, aber kann es nicht zur Arbeit.Brauchen Sie Hilfe in mvc

Kann mir bitte jemand mit dem richtigen Code helfen?

//This is the code I have now. 

public string mypassword = "tja"; 

// GET: SmsBuys 
public ActionResult Index() 
{ 
     var getuser = User.Identity.GetUserId(); 
     var getpassword = db.SmsBuys.Where(x => x.code == mypassword); 

     if (getpassword == getuser) //This is wrong I know 
     { 
      return RedirectToAction("Index", "Buys"); 
     } 
     else 
     { 
      return View(db.SmsBuys.ToList().Where(x => x.UserId == User.Identity.GetUserId())); 
     } 
} 

Antwort

0

Handhabung Passwort Zugänglichkeit

Das Passwort des aktuellen Benutzers ist wirklich nur zugänglich sein würde, wenn sie es an den Server senden.

Daher müssen Sie wahrscheinlich im eigentlichen POST-Ereignis damit umgehen, dass Ihr Benutzer seine entsprechenden Anmeldeinformationen an den Server sendet, damit er in der Anwendung authentifiziert wird.

Angenommen, Sie haben eine sehr einfache Form haben, wie dies für Ihre Benutzer sieht in einzuloggen:

<form action='@Url.Action("SignIn","Account")' method='post'> 
    <input name='username' placeholder='Username' /> 
    <input name='password' type='password' placeholder='Password' /> 
    <input type='submit' value='Log In' /> 
</form> 

Wenn geschrieben, dies wird Ihr Konto-Controller sucht eine SignIn Aktion innerhalb, der wie folgt aussieht, das ist, wo Sie diese Logik behandeln würden:

[HttpPost] 
public ActionResult SignIn(string username, string password) 
{ 
     // Compare your password 
     if(password == yourSpecialPassword) 
     { 
      return RedirectToAction("Index", "Buys"); 
     } 

     // If you are still around, authenticate the user here 
} 

das Kennwort des Benutzers wird zusammen in den password Variable übergeben werden, die Sie dann zu vergleichen, gegen die Datenbank Wert verwenden können, die beste Vorgehensweise zu bestimmen, zu übernehmen.

Zugriff aus der Datenbank

Außerdem, wenn Sie Ihr Passwort lesen die Datenbank zu überprüfen, gegen aus, werden Sie wahrscheinlich die FirstOrDefault() Methode verwenden möchten, einen einzigen zu ziehen, wie zu Where() Gegensatz was würde Rückkehr eine Sammlung von ihnen:

var getpassword = db.SmsBuys.FirstOrDefault(x => x.code == mypassword); 
// If a password was found, check against the posted value 
if(password == getpassword) 
{ 
     return RedirectToAction("Index", "Buys"); 
} 
+0

ich es jetzt behoben haben, habe ich ein Cookie :) – Daniel

+0

sind Sie das Kennwort des Benutzers in einem Cookie gespeichert? Es scheint nicht praktisch zu sein, etwas Sensibles wie ein Passwort zu behalten, das nur für die Weiterleitung verwendet wird. Ich würde es sehr empfehlen, es nur innerhalb des POST-Ereignisses zu übergeben, da es für mich ein bisschen mehr Sinn macht, aber Ihre Kilometerzahl/Anwendungsfall kann variieren. –

+0

Nein nein, das Passwort des Benutzers wird nicht in einem Cookie gespeichert. Ich benutze nur einen Cookie, damit ich schreiben kann, wenn (smscookie! = Null) gehe zu dieser Seite, ansonsten gehe zu einem anderen – Daniel