如何从web.config读取cookie的域名?

时间:2017-08-31 23:13:35

标签: asp.net web-config

如果我想设置多域身份验证(或者出于其他原因我想指定身份验证域),我必须在两个地方执行此操作:

  1. 在web.config中:

    <authentication mode="Forms">
     <forms loginUrl="~/Account/Login.aspx" timeout="2880" enableCrossAppRedirects="true" domain="mydomain.com" />
    
  2. 在登录页面上,当我创建我的身份验证cookie时:

    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, user, DateTime.Now, DateTime.Now.AddHours(3), false, role, FormsAuthentication.FormsCookiePath);
        string hash = FormsAuthentication.Encrypt(ticket);
        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
        cookie.Expires = ticket.Expiration;
    
        cookie.Domain = "mydomain.com"; // <-----
        Response.Cookies.Add(cookie);
    
  3. 这很好......但每当我想改变域名时,我必须在两个地方做。有没有办法从&lt;直接读取域名?身份验证&gt; web.config中的标签?我知道我可以把它放在&lt; appSettings&gt;部分,并从程序中的任何地方轻松阅读,但我必须在web.config文件中更改它两次。

1 个答案:

答案 0 :(得分:0)

您可以在身份验证/表单中进行设置,并以FormAuthentication.CookieDomain的形式读取