更改 cookie 中的域(ASP.Net 和 Microsoft.Owin.Security)

Change the domain in a cookie (ASP.Net and Microsoft.Owin.Security)

我使用库 Microsoft.Owin.Security、Microsoft.Owin.Security.OpenIDConnect 和 Microsoft.Owin.Security.Cookies。它工作正常,我可以创建一个安全 cookie。 但在安全 cookie 中是域 AAA.de。如何将 cookie 中的域更改为 .AAA.de ?

这是我用来登录用户的代码。

public void SignIn()
{
    if (!Request.IsAuthenticated)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(
            new AuthenticationProperties(
                new Dictionary<string, string>
                {
                    {Startup.PolicyKey, Startup.SignInPolicyId}
                })
                {
                    RedirectUri = Redirect,
                }, OpenIdConnectAuthenticationDefaults.AuthenticationType);
    }
}

感谢您的帮助。

可以使用自定义 Cookie 提供程序配置 cookie 域 - 这通常作为应用程序启动过程的一部分进行配置 - 您可能还有一个 App_Start 文件夹和 Startup.Auth.cs class 在其中(如果您已经开始使用典型的基础项目。

您的提供商看起来像:

public class CookieAuthProvider : CookieAuthenticationProvider
{
    public override void ResponseSignIn(CookieResponseSignInContext context)
    {
      //Alter you cookie options
      context.CookieOptions.Domain  =  ".AAA.de";      
      base.ResponseSignIn(context);
    }
 }

然后您可以从您的初创公司 class 通过以下方式调用它:

CookieAuthProvider myProvider = new CookieAuthProvider();
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
   AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
   LoginPath = new PathString("/Account/Login"),
   Provider = myProvider
});

主要基于 this answer 到 "Asp.Net Identity - Setting CookieDomain at runtime"