当前位置: 首页>>代码示例>>C#>>正文


C# SignInManager.ExternalSignInAsync方法代码示例

本文整理汇总了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 });
            }

        }
开发者ID:MissKalani,项目名称:EventsApp,代码行数:52,代码来源:AuthController.cs


注:本文中的SignInManager.ExternalSignInAsync方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。