混合自己的Asp.Net Identity Cookie认证与OpenId认证



谁知道一个很好的例子,混合自己的Asp。Net身份Cookie认证(本地db)与Owin OpenId认证(云)?然后,用户可以选择通过创建新的用户通行证(存储在本地数据库中)或通过Office 365帐户登录/注册。但是所有用户都将使用asp.net Identity(本地数据库)中的声明和角色。

我已经这样做了,但是我有一些奇怪的问题。下面是我在Startup.Auth.cs

中的ConfigureAuth方法
 public void ConfigureAuth(IAppBuilder app)
    {
        // Configure the db context and user manager to use a single instance per request
        app.CreatePerOwinContext(ApplicationDbContext.Create);
        app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
         app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
        //app.Properties["Microsoft.Owin.Security.Constants.DefaultSignInAsAuthenticationType"] = "ExternalCookie";
            // Enable the application to use a cookie to store information for the signed in user
        // and to use a cookie to temporarily store information about a user logging in with a third party login provider
        // Configure the sign in cookie
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
          //  LoginPath = new PathString("/Account/Login"),
            Provider = new CookieAuthenticationProvider
            {
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                    validateInterval: TimeSpan.FromMinutes(30),
                    regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
            }
        });
        app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
        app.UseOpenIdConnectAuthentication(
          new OpenIdConnectAuthenticationOptions
          {
              ClientId = clientId,
              Authority = authority,
              PostLogoutRedirectUri = postLogoutRedirectUri
          });
    }

AccountController中的Logoff方法

   public ActionResult LogOff()
    {
        //AuthenticationManager.SignOut();
        AuthenticationManager.SignOut( 
            DefaultAuthenticationTypes.ExternalCookie, 
            DefaultAuthenticationTypes.ApplicationCookie, 
            OpenIdConnectAuthenticationDefaults.AuthenticationType,
            CookieAuthenticationDefaults.AuthenticationType
        );
        return RedirectToAction("Login", "Account");
    }

这就是问题所在,我试着在另一个帖子上解释,但还没有得到任何回应。

问题链接

相关内容

  • 没有找到相关文章

最新更新