Вопрос

Есть ли какой-либо способ предоставить функцию выхода из системы для сайта, который использует классический asp и который использует проверку подлинности Windows (т.Е.разрешения для ограниченных папок устанавливаются через серверную ОС, а имена пользователей / пароли хранятся в Active Directory)?

Если это имеет какое-либо значение, то на сервере работает IIS 5.0.Выход из системы должен работать как минимум для IE (6, 7 и 8) и Firefox.

Обратите внимание, что это старый и довольно большой сайт - многие сотни отдельных страниц asp, - поэтому любое решение, которое включало бы изменение отдельных страниц, просто не будет работать.(По той же причине, а также из элементарной вежливости, пожалуйста, не предлагайте менять на asp.net.)

То, что я нашел до сих пор, предполагает, что отправка кода ответа 401 мог бы заставьте некоторые браузеры отменить аутентификацию, но (1) я не знаю, как это сделать, и (2) Я бы действительно предпочел что-то, что действительно работает, а не просто имеет мало шансов на работоспособность.Я также знаю, что возиться с объектом сеанса (например,.Abandon) было бы совершенно бессмысленно, потому что аутентификация выполняется не там.

Это было полезно?

Решение

Ваше использование термина "выход из системы" сбивает с толку.Обычно это возможность изменения местоположения сайтов для управления входами / выходами, и обычно это делается с использованием объекта session, но это не то, о чем вы говорите.

Я вижу две возможные вещи, о которых вы, возможно, говорите.

Проверка подлинности соединения

Во-первых, тот факт, что аутентификация типа, выполняемая Windows integrated security, выполняется на уровне подключения.Как только соединение было аутентифицировано, это соединение (которое в соответствии с HTTP / 1.1 по умолчанию поддерживается в открытом состоянии) можно использовать без дополнительной необходимости в подтверждениях подлинности.

Возможно, удастся убедить клиента или сервер закрыть соединение, включив Connection: close заголовок в ответе, но на самом деле это может не привести к закрытию соединения.

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

Отсюда следует вывод, что вы мало что можете сделать с аутентифицированными соединениями на уровне каждого сеанса.

Кэширование учетных данных

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

Заключение

Ответ на (по крайней мере, на вопрос, который, как я понимаю, вы задаете) таков:нет, ты не можешь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top