本文整理汇总了C#中SignInManager.ExternalSignInAsync方法的典型用法代码示例。如果您正苦于以下问题:C# SignInManager.ExternalSignInAsync方法的具体用法?C# SignInManager.ExternalSignInAsync怎么用?C# SignInManager.ExternalSignInAsync使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SignInManager
的用法示例。
在下文中一共展示了SignInManager.ExternalSignInAsync方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ExternalLoginCallback
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
return RedirectToAction("Login", new { returnUrl = returnUrl });
}
var signInManager = new SignInManager<AppUser, string>(eventUoW.Users.UserManager, HttpContext.GetOwinContext().Authentication);
var result = await signInManager.ExternalSignInAsync(loginInfo, false);
switch (result)
{
case SignInStatus.Success:
{
var user = await eventUoW.Users.UserManager.FindAsync(loginInfo.Login);
if (HasPassword(user))
{
return RedirectToLocal(returnUrl);
}
else
{
return RedirectToAction("ConnectAccount", new { returnUrl = returnUrl });
}
}
case SignInStatus.Failure:
{
// Find a valid username. Creating an external user should never fail.
var username = loginInfo.DefaultUserName;
int usernameSuffix = 1;
while (eventUoW.Users.GetUserByUsername(username) != null)
{
username = loginInfo.DefaultUserName + usernameSuffix.ToString();
usernameSuffix++;
}
// Create a user and log in.
var user = new AppUser { UserName = username };
var userCreationResult = await eventUoW.Users.UserManager.CreateAsync(user);
await eventUoW.Users.UserManager.AddLoginAsync(user.Id, loginInfo.Login);
await signInManager.ExternalSignInAsync(loginInfo, false);
return RedirectToAction("ConnectAccount", new { returnUrl = returnUrl });
}
case SignInStatus.LockedOut:
case SignInStatus.RequiresVerification:
default:
return RedirectToAction("Register", new { returnUrl = returnUrl });
}
}