Или оно даже не спросит пароля ?
Пароль-то спросит, только Apache пошлет нафиг еще раньше (до того, как программа проверит, изменилось ли количество \'@\'). Вот если одновременно с этим действительно менять логин (на время)... Это я и попробовал сделать. И, о чудо - все работает!
Oak, спасибо за идею! Но, все по порядку...
Пока я проверял, обнаружил еще один "недокументированный глюк"
народного броузера. Схема такая (читать внимательно!):
1) успешная авторизация (логин1, пароль);
2) ...
3) посылаю 401 и одновременно меняю логин1 на логин2;
4) успешно авторизуюсь (логин2, пароль);
5) при следующем запросе меняю обратно временный логин2 на логин1;
6) все следующие запросы выглядят так:
--- броузер с запросом посылает из кэша пароль и логин2;
--- авторизуюсь (логин1, пароль).
Т.е. после этого, сколько бы я раз успешно не авторизовался с логином1, броузер все равно сначала посылает серверу логин2, а затем запрашивает логин и пароль у меня (при каждом запросе!!!).
В общем, я долго смеялся, когда изучил логи апача.
А выход очень простой: сразу после успешной авторизации с временным логином2 надо не только заменить его на логин1, но и еще раз послать 401. Две авторизации подряд - совсем не страшно, особенно если снабдить их соответствующими "realm". Остается только один подводный камень: в случае несанкционированного доступа, повторная авторизация выполнит свою функцию, но логин окажется измененным. Соответственно при следующей авторизации валидный пользователь должен быть предупрежден о такой возможности (realm типа "если не получается добавь такой-то символ").
PS. Dm, Oak, при случае, с меня пиво!