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

问题描述 投票:1回答:1

如果要设置多域身份验证(或出于其他任何原因,我想指定身份验证域,则必须在两个地方进行:

  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);
    

很好...但是每当我要更改域时,都必须在两个地方进行。有没有一种方法可以直接从web.config中的标记读取域?我知道我可以将其放在部分中,并可以从程序中的任何位置轻松读取它,但是然后我必须在web.config文件中对其进行两次更改。

asp.net web-config
1个回答
0
投票

您可以在身份验证/表单中设置它,并将其读取为FormAuthentication.CookieDomain

© www.soinside.com 2019 - 2024. All rights reserved.