MVC 5 & ASP.NET Identity - Umsetzung Verwirrung

Ich bin der Erstellung einer neuen web-Anwendung, die geschrieben werden mit MVC 5 und Entity Framework-Database First Ansatz. Ich würde auch gerne ASP.Net Identität, sich nach Mitgliedschaft, Authentifizierung, Genehmigung etc.

Ich gelesen habe, ein gutes Stück über die ASP.Net Identität im Internet und wie es funktioniert, aber ich bin immer noch lernen über dieses Thema.

Wenn ich meine MVC 5-Anwendung in Visual Studio 2013 und blickte auf die Konto Controller mein Erster Instinkt war, dass ich nicht mochte, was ich sah, D. H., eine DbContext war, auf das verwiesen wird mit dem Namen 'ApplicationDbContext'. Der Grund, warum ich nicht so war, da ich lieber meinen DbContext in das entsprechende Projekt in meiner Lösung, D. H., bei meinem Modell Schicht, die hält sich an die Trennung Logik.

Auch, die out of the box MVC 5 Projekt verwendet Entity Framework Code First erstellen einer Standard-Datenbank und die Tabellen zum speichern der Benutzer -, Rollen-etc.

Weil ich muss eine vorhandene Datenbank mit einer bestehenden User-Tabelle, dieser Ansatz passt nicht zu meinen Bedürfnissen.

Möchte ich noch auf die neueste ASP.Net Identität für meine Anwendung, wie es aussieht, haben viele Vorteile, deshalb fand ich in diesem Artikel die abisolierten zurück, eine Menge von Entity Framework code, der aber immer noch OWIN powered Authentifizierung in einem ASP.NET MVC.

http://www.khalidabuhakmeh.com/asp-net-mvc-5-authentication-breakdown-part-deux

Mit dem tutorial oben, hier ist die HttpPost Login Methode für meine Konto Controller

    [HttpPost]
    [AllowAnonymous]
    public ActionResult Login(LoginViewModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            //Calling my own custom Account Service which validates users login details
            var user = _AccountService.VerifyPassword(model.UserName, model.Password, false);
            if (user)
            {
                var identity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, model.UserName), }, DefaultAuthenticationTypes.ApplicationCookie, ClaimTypes.Name, ClaimTypes.Role);

                //ToDo: Manually adding Role, but will pull from db later
                identity.AddClaim(new Claim(ClaimTypes.Role, "guest"));

                AuthenticationManager.SignIn(new AuthenticationProperties
                {
                    IsPersistent = model.RememberMe
                }, identity);

                return RedirectToAction("Index", "MyDashboard");
            }
            else
            {
                ModelState.AddModelError("", "Invalid username or password.");
            }
        }

        return View(model);
    }

In meinem vorherigen MVC-Anwendungen, die ich in der Regel gerollt, meine eigenen Mitgliedschaft und wenn ein User auf der Webseite angemeldet und wurde authentifiziert, ich würde gespeichert haben, die jede zusätzliche Benutzer-details wie Benutzer-id, Geburtsdatum usw. in den UserData string der FormsAuthenticationTicket -.

Als der code oben nicht verwenden FormsAuthentication, stattdessen verwendet Sie OWIN CookieAuthentication, ich bin nicht sicher, wie Sie Sie zu speichern diese zusätzliche user-Daten.

Daher habe ich ein paar Fragen über die Probleme, die ich erlebe.

  1. Wie Speichere ich die userID oder andere zusätzliche Stück von Benutzer-Daten (Geburtsdatum etc.) die Art und Weise, die ich verwendet, um in FormsAuthentication? Ist dies getan, indem ein Anspruch auf die Identität?
  2. Funktioniert die Methode mit ASP.Net Identität/OWIN oben scheint korrekt, bedenkt ich bin mit Entity Framework-Database First mit einer bestehenden Datenbank?
  3. Soll ich mich mit der out-of-the-box-code, der verwendet wird in der Konto-Controller, d.h., UserManager, ApplicationUser, ApplicationDbContext etc und schließt diese mit meiner bestehenden Datenbank?

Ich bitte um Entschuldigung, wenn meine Frage ist verwirrend, ich nehme an, ich bin nur ein wenig unsicher, welchen Ansatz ich verwenden sollten, während Sie versuchen, zu verwenden ASP.Net Identität in meinem neuesten Projekt.

Jedes feedback würde sehr geschätzt werden.

Dank.

hi @tgriffiths ich bin in der gleichen situation wie Sie waren.. können Sie bitte helfen Sie mir in dem, was Ansatz, den Sie verwenden

InformationsquelleAutor tcode | 2014-01-27

Schreibe einen Kommentar