WebSecurity-vs FormsAuthentication in ASP.NET MVC4
Ich denke, ich werde versuchen, mischen Sie zwei Anbieter im Projekt, aber ich bin auf der Suche zu verwenden, websecurity in Verbindung zu mein Formen-Authentifizierung. Ich brauche websecurity für die OAUTH-Authentifizierung mit Facebook, und google.
Den Fehler, dass ich immer, wenn ich versuche, eine Anmeldung über facebook ist
Um diese Methode aufzurufen, die Membership.Provider
Eigenschaft muss eine Instanz von ExtendedMembershipProvider
.
Hier sind die code-Beispiele. Wie kann ich beide verwenden?
public ActionResult ExternalLoginCallback(string returnUrl)
{
AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
if (!result.IsSuccessful)
{
return RedirectToAction("ExternalLoginFailure");
}
if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false))
{
return RedirectToLocal(returnUrl);
}
if (User.Identity.IsAuthenticated)
{
//If the current user is logged in add the new account
OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name);
return RedirectToLocal(returnUrl);
}
else
{
//User is new, ask for their desired membership name
string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId);
ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName;
ViewBag.ReturnUrl = returnUrl;
return View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = result.UserName, ExternalLoginData = loginData });
}
}
und
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
//If we got this far, something failed, redisplay form
return View(model);
}
InformationsquelleAutor Srikar Doddi | 2012-08-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte möglicherweise damit zusammenhängen das gleiche Problem wie ich MVC4 ExtendedMembershipProvider und entityframework
.. Habe ich entfernt, die universal-Anbieter nuget-Paket und dieser spezielle Fehler verschwand.
Auch diese "sehr neu" Artikel von Jon Galloway helfen kann.
InformationsquelleAutor Tim
Wenn Sie Visual Studio verwenden, möchten Sie vielleicht sparen Sie sich all diese Mühe. Die MVC 4 Internet-Vorlage kommt mit vier externen identity-Provider aus der box. Ich habe diese getestet und Google-Konto, Microsoft-Konto, Facebook-login oder Twitter-login alle funktionieren, mit null Zeilen code!
Ich denke, das gleiche ist mit dem Web-Formular-Vorlage zu.
Weitere Infos unter http://blogs.msdn.com/b/webdev/archive/2012/08/15/oauth-openid-support-for-webforms-mvc-and-webpages.aspx.
InformationsquelleAutor Old Geezer
Können Sie eine Implementierung von
ExtendedMembershipProvider
. Für ex: der eingebauteSimpleMembershipProvider
.Jeder
ExtendedMembershipProvider
IST EINMembershipProvider
.Lesen Sie mehr auf Jon Galloway ' s Blog.
InformationsquelleAutor Madushan