WebSecurity vs FormsAuthentication dans ASP.NET MVC4
Je suppose que je suis en train d'essayer de mélanger deux fournisseurs sur le projet, mais je cherche à utiliser websecurity dans le cadre de mes formulaires d'authentification. J'ai besoin de websecurity pour l'authentification OAUTH à l'aide de Facebook et de google.
L'erreur que j'obtiens quand j'essaie de vous connecter en utilisant facebook est
À l'appel de cette méthode, le Membership.Provider
propriété doit être une instance de ExtendedMembershipProvider
.
Voici les exemples de code. Comment puis-je utiliser les deux?
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 });
}
}
et
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);
}
OriginalL'auteur Srikar Doddi | 2012-08-21
Vous devez vous connecter pour publier un commentaire.
Pourrait peut-être être liés à la même question que moi MVC4 ExtendedMembershipProvider et entityframework
.. J'ai enlevé l'universel fournisseurs de package nuget et cette erreur particulière dissappeared.
Aussi cette "très récents" article de Jon Galloway peut aider.
OriginalL'auteur Tim
Si vous utilisez Visual Studio, vous pouvez enregistrer vous-même tous ces efforts. Le MVC 4 Internet modèle est livré avec quatre fournisseurs d'identité externes de la boîte. J'ai testé et Comptes Google, Microsoft compte, Facebook login, et de connexion de Twitter tous les beaux travaux, avec zéro lignes de code!
Je pense que la même chose est fourni avec le modèle de Formulaire Web.
Plus d'info à http://blogs.msdn.com/b/webdev/archive/2012/08/15/oauth-openid-support-for-webforms-mvc-and-webpages.aspx.
OriginalL'auteur Old Geezer
Vous pouvez utiliser une mise en œuvre de
ExtendedMembershipProvider
. Ex: le haut -SimpleMembershipProvider
.Chaque
ExtendedMembershipProvider
EST UNMembershipProvider
.Lire plus à Jon Galloway Blog.
OriginalL'auteur Madushan