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

时间:2017-05-24 10:04:55

标签: asp.net-mvc-3 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);
    }
}

感谢您的帮助。

1 个答案:

答案 0 :(得分: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
});

严重基于this answer到“Asp.Net Identity - 在运行时设置CookieDomain”