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

Schreibe einen Kommentar