1

我使用 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);
    }
}

谢谢你的帮助。

4

1 回答 1

0

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

您的提供者将类似于:

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

然后,您可以通过以下方式从您的启动类中调用它:

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

很大程度上基于对“Asp.Net Identity - Setting CookieDomain at runtime”的回答

于 2017-05-24T10:21:38.587 回答