public async Task <ActionResult> ExternalLoginCallback(string returnUrl) { var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(); if (loginInfo == null) { return(RedirectToAction("Login")); } Magicodes.Web.Interfaces.GlobalApplicationObject.Current.ApplicationContext.ApplicationLog.Log(LoggerLevels.Debug, "DefaultUserName:"******"\tEmail:" + loginInfo.Email + "\tProviderKey:" + loginInfo.Login.ProviderKey + "\tExternalIdentity.Name:" + loginInfo.ExternalIdentity.Name + "\tExternalIdentity.Label:" + loginInfo.ExternalIdentity.Label + "\tExternalIdentity.Count:" + loginInfo.ExternalIdentity.Claims.Count()); // 如果用户已具有登录名,则使用此外部登录提供程序将该用户登录 var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent : false); switch (result) { case SignInStatus.Success: return(RedirectToLocal(returnUrl)); case SignInStatus.LockedOut: return(View("Lockout")); case SignInStatus.RequiresVerification: return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false })); case SignInStatus.Failure: default: // 如果用户没有帐户,则提示该用户创建帐户 ViewBag.ReturnUrl = returnUrl; ViewBag.LoginProvider = loginInfo.Login.LoginProvider == "QQConnect" ? "QQ账号" : loginInfo.Login.LoginProvider; return(View("ExternalLoginConfirmation", new ExternalLoginConfirmationViewModel { Email = loginInfo.Email, UserNickName = loginInfo.DefaultUserName })); } }
public async Task <ActionResult> ExternalLoginCallback(string returnUrl) { var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(); if (loginInfo == null) { return(RedirectToAction("Login")); } // Sign in the user with this external login provider if the user already has a login var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent : false); switch (result) { case SignInStatus.Success: return(RedirectToLocal(returnUrl)); case SignInStatus.LockedOut: return(View("Lockout", loginInfo)); case SignInStatus.RequiresVerification: return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false })); case SignInStatus.Failure: default: // If the user does not have an account, then prompt the user to create an account ViewBag.ReturnUrl = returnUrl; ViewBag.LoginProvider = loginInfo.Login.LoginProvider; return(View("ExternalLoginConfirmation", new ExternalLoginConfirmationViewModel { Email = loginInfo.Email })); } }
public async Task <ActionResult> ExternalLoginCallback(string reason, string returnUrl) { var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(); if (loginInfo == null) { return(RedirectToAction("Login")); } // --- At this point the user is successfully logged in. // --- Sign in the user with this external login provider if the user already has a login var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent : false); switch (result) { case SignInStatus.Success: if (reason == "signup") { // TODO: A user tried to sign up, but its account is already created. } var subscSrv = ServiceManager.GetService <ISubscriptionService>(); var token = await subscSrv.GetUserTokenByProviderDataAsync(loginInfo.Login.LoginProvider, loginInfo.Login.ProviderKey); CreateAuthenticationTicket(false, token.UserId, token.UserName, token.IsServiceUser, token.SubscriptionId, token.IsSubscriptionOwner); return(RedirectToLocal(returnUrl)); case SignInStatus.LockedOut: return(View("Lockout")); default: // --- The user has no account and subscription yet if (reason == "signup") { return(View("SignUpWithExternalLogin", new SignUpWithExternalLoginViewModel { Provider = loginInfo.Login.LoginProvider, Email = loginInfo.Email, UserName = loginInfo.ExternalIdentity.Name })); } if (reason == "login") { return(View("LoginWithNoSubscriptionView", new SignUpWithExternalLoginViewModel { Provider = loginInfo.Login.LoginProvider, Email = loginInfo.Email, UserName = loginInfo.ExternalIdentity.Name })); } return(RedirectToLocal(returnUrl)); } }
public async Task <SignInStatus> SignInExternalyAsync(ExternalLoginInfo loginInfo, bool isPersistence) { try { return(await AppSignInManager.ExternalSignInAsync(loginInfo, isPersistence)); } catch (Exception) { return(SignInStatus.Failure); } }
public async Task <SignInStatus> ExternalSignInAsync(ExternalLoginInfo loginInfo) { return(await _signInManager.ExternalSignInAsync(loginInfo, isPersistent : false)); }