Asp.net

表單身份驗證是否適用於 Web 負載均衡器?

  • November 10, 2015

我正在開發一個使用表單身份驗證的 Web 應用程序。

   <authentication mode="Forms">
       <forms slidingExpiration="true"
        loginUrl="~/User.aspx/LogOn"
        timeout="15"
        name="authToken"  />
   </authentication>

當我登錄時,我在瀏覽器中看到了這個 cookie:

替代文字

問題是當我將此網站置於負載平衡模型中時會發生什麼?ASP.net 會話 cookie 在哪裡設置?我沒有在程式碼中明確地做到這一點,所以我假設它發生在 ASP.Net 的某個地方的幕後。

此外,如果會話 cookie 是由 Web 伺服器 A 設置的,我假設 Web 伺服器 B 不會辨識它並將其視為無效會話。如果是這種情況,我可能不想使用它,對吧?

您必須將機器密鑰設置為相同,並且兩台機器上的名稱相同……如果這樣做,您應該沒有問題與表單身份驗證進行負載平衡。

       <authentication mode="Forms">
       <forms loginUrl="~/Login/Index" defaultUrl="~/"
                    name=".myportal"
                    protection="All" slidingExpiration="true" timeout="20" path="/"
                    requireSSL="false"></forms>
   </authentication>

   <machineKey validationKey="534766AC57A2A2F6A71E6F0757A6DFF55526F7D30A467A5CDE102D0B50E0B58D613C12E27E7E778D137058E" decryptionKey="7059303602C4B0B3459A20F9CB631" decryption="Auto" validation="SHA1"/>

會話可能會稍微複雜一些。您可以將 ASP.Net 會話狀態儲存在數據庫中,或者使用共享會話提供程序使其也可用於負載平衡。

這是一篇關於在數據庫中儲存會話狀態的好文章:http: //idunno.org/articles/277.aspx

引用自:https://stackoverflow.com/questions/3357850