2017-12-24 11 views
0

Ich versuche, ein Problem zu lösen, gibt es zwei Anwendungen: die erste ASP.NET MVC und die zweite Client-Server-Anwendung. Nach der Autorisierung in der ASP.NET MVC-Anwendung greift der Benutzer auch auf die Client-Server-Anwendung zu. Was ist der beste Weg, um diese Funktion mit Cookies oder Tokens zu implementieren? Wenn es eine nützliche Verbindung gibt, werde ich dankbar sein.Schnelle Registrierung

Was ist der beste Weg, um Daten über einen autorisierten Benutzer an eine Webanwendung zu übertragen?

"Grobe" Modell von dem, was mir passiert zu implementieren. Ich gebe es für eine ungefähre Darstellung dessen, was ich realisieren möchte.

WebAppSetCookies:

[HttpPost] 
public ActionResult Index(ViewModelUserInfo user) 
{ 
    if(user != null) 
    { 
     UserInfo acc = new UserInfo() { Username = user.Name, Password = user.Password }; 

     var searching = userDb.FirstOrDefault(f => f.Username == acc.Username && 
               f.Password == acc.Password); 

     if(searching != null) 
     { 
      HttpCookie cookie = new HttpCookie("user"); 
      cookie.Values["name"] = acc.Username; 
      cookie.Values["password"] = acc.Password; 

      Response.SetCookie(cookie); 

      ViewBag.Authorization = "Successful!"; 

      return View(user); 
     } 
    } 

    ViewBag.Authorization = "Wrong authorization!"; 

    return View(); 
} 

WebAppGetCookies:

public ActionResult Index() 
{ 
    UserInfo user; 
    var cookie = Request.Cookies["user"]; 

    if (cookie != null) 
    { 
     user = new UserInfo() 
     { 
     Username = cookie.Values["name"], 
     Password = cookie.Values["password"] 
     }; 

     return View(user); 
    } 

    user = new UserInfo() { Username = "unknown", Password = "unknown" }; 

    return View(user); 
} 

Antwort

1

Sie können Cookies nur HTTP-Aktie, wenn beide Standorte ein Teil derselben Wurzel Hostnamen sind z.B. some.site.com und another.site.on.site.com. Ein solcher Cookie müsste dann mit seinem Domain-Teil site.com erstellt werden. Nur dann senden Browser diese Cookies an beide, unabhängig davon, welche sie enthalten. Danach kann die sekundäre Zielwebsite mit ihnen während ihrer Verarbeitung arbeiten.

Dies würde funktionieren, wenn beide Seiten mehr als nur den Root-Hostnamen teilen; z.B. site1.on.site.com und site2.on.site.com wären dann beide in der Lage mit on.site.com Cookie zu arbeiten.

+0

aber wenn ich verschiedene Seiten habe? Wie übertrage ich Benutzerinformationen (Login und Passwort) auf die zweite Seite? – Tibomso

+0

Sie können [Benutzername und Passwort nicht umgehen]. Das Thema, an dem Sie interessiert sind, heißt "Single Sign-On". Sie sollten es googeln, aber hier ist eine Ressource: http://arunendapally.com/post/implementation-of-single-sign-on-(sso)-in-asp.net-mvc. Das Konzept besteht darin, dass sich der Benutzer einmal anmeldet und dann auf anderen Websites im vertrauenswürdigen Bereich erkannt wird. Google tut dies beispielsweise auf allen seinen Websites. Darauf können Sie hier keine vollständige Lösung hoffen. Wenn Sie dieses Tutorial durchlaufen, sollten Sie verstehen, wie das am Ende funktioniert. –

+0

Vielen Dank für den Artikel. aber was ist, wenn ich die Registrierung bereits implementiert habe und ich habe eine Anwendung mvc, und die zweite ist nicht mvc – Tibomso