Работает ли проверка подлинности с помощью Web Load Balancers?

Я работаю над веб-приложением, использующим проверку подлинности с помощью форм.

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

Я вижу этот файл cookie в моем браузере при входе в систему:

alt text

Вопрос в том, что происходит, когда я помещаю этот сайт в модель с балансировкой нагрузки? Где установлен cookie сеанса ASP.net? Я явно не делал этого в коде, поэтому я предполагаю, что это происходит за кулисами где-то в ASP.Net.

Кроме того, если cookie сеанса задается веб-сервером A, я предполагаю, что веб-сервер B не узнает его и не рассматривает его как недействительный сеанс. Если это так, я, вероятно, не хочу его использовать, верно?

Ответ 1

Вам нужно будет установить машинный ключ таким же, и имя будет одинаковым на обеих машинах... если это будет сделано, у вас не должно возникнуть проблем с балансировкой нагрузки с помощью форм auth.

        <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