Здравствуйте, Gollum, Вы писали: G>Здравствуйте, k_2, Вы писали: k_2>>Все работает на localhost и не работает в интранете G>Что значит — не работает?
Это значит што на localhost при входе на страницу content.aspx пользователь перенаправляется на страницу logon.aspx вводит пароль и по кнопке btnLogin попадает на content.aspx. В интранете по btnLogin пользователь вновь оказывается на logon.aspx.
Здравствуйте, k_2, Вы писали:
k_2>Все работает на localhost и не работает в интранете k_2>От каких настроек зависит? на IIS уже вроде все настройки перепробовала
1) Что такое "все"? Так обычно пользователи говорят, когда после месяца эксплуатации они вдруг замечают, что что-то не так (например, список, которым они не пользовались, пуст), и начинают ругаться, что у них "опять все не работает". Выражайтесь яснее, коллега, не уподобляйтесь нашим бестолковым кормильцам Симптомы — в студию!
2) В IIS нужно дать возможность анонимного доступа к приложению. Кстати, приложение-то в каталоге создано? global.asax туда скопировано (а то без нее таакие чудеса бывают, мама не горюй)?
Здравствуйте, k_2, Вы писали:
k_2>Это значит што на localhost при входе на страницу content.aspx пользователь перенаправляется на страницу logon.aspx вводит пароль и по кнопке btnLogin попадает на content.aspx. В интранете по btnLogin пользователь вновь оказывается на logon.aspx.
Где пользователи определены? Если в базе, то может быть используются разные базы, и на базе в интранете пользователь не заведен?
He's taking the preventive measures, It must have been too late
Здравствуйте, Козьма Прутков, Вы писали:
КП>Здравствуйте, k_2, Вы писали:
k_2>>Все работает на localhost и не работает в интранете k_2>>От каких настроек зависит? на IIS уже вроде все настройки перепробовала
КП>1) Что такое "все"? Так обычно пользователи говорят, когда после месяца эксплуатации они вдруг замечают, что что-то не так (например, список, которым они не пользовались, пуст), и начинают ругаться, что у них "опять все не работает". Выражайтесь яснее, коллега, не уподобляйтесь нашим бестолковым кормильцам Симптомы — в студию!
КП>2) В IIS нужно дать возможность анонимного доступа к приложению. Кстати, приложение-то в каталоге создано? global.asax туда скопировано (а то без нее таакие чудеса бывают, мама не горюй)?
Извеняюсь за туманность — я думала весь мир со мной вместе мучается и все и так понятно без слов Приложение разумеется создано global.asax в наличии. Симптомы в предыдущем посте, выражения вырезаны
Здравствуйте, Gollum, Вы писали:
G>Здравствуйте, k_2, Вы писали:
k_2>>Это значит што на localhost при входе на страницу content.aspx пользователь перенаправляется на страницу logon.aspx вводит пароль и по кнопке btnLogin попадает на content.aspx. В интранете по btnLogin пользователь вновь оказывается на logon.aspx.
G>Где пользователи определены? Если в базе, то может быть используются разные базы, и на базе в интранете пользователь не заведен?
Дело как я понимаю не в базе данных (xml), возможно ввели в заблуждение комментарии //cut user authentication
На данный момент отключила проверку пользователя и просто пытаюсь отработать перенаправление между страницам content и logon.
procedure TWebForm1.btnLogin_Click(sender: System.Object; e: System.EventArgs);
begin
FormsAuthentication.RedirectFromLoginPage(tbxUser.Text, false);
end;
Здравствуйте, k_2, Вы писали:
k_2>Дело как я понимаю не в базе данных (xml), возможно ввели в заблуждение комментарии //cut user authentication k_2>На данный момент отключила проверку пользователя и просто пытаюсь отработать перенаправление между страницам content и logon.
Как можно перенаправить к странице content если доступ к ней анонимным пользователям запрещен в веб.конфиг как я понял, а аутентификации не происходит?
Здравствуйте, Gollum, Вы писали:
G>Здравствуйте, k_2, Вы писали:
k_2>>Извеняюсь за туманность — я думала весь мир со мной вместе мучается
G>Увы Формс работает вполне нормально Тут явно в консерватории надо править.
Увы мне увы наша консерватория только localhost работает Возможно поэтому мне и помощь понадобилась?
Здравствуйте, k_2, Вы писали:
k_2>Дело как я понимаю не в базе данных (xml), возможно ввели в заблуждение комментарии //cut user authentication k_2>На данный момент отключила проверку пользователя и просто пытаюсь отработать перенаправление между страницам content и logon.
Здравствуйте, k_2, Вы писали: k_2>Все работает на localhost и не работает в интранете k_2>От каких настроек зависит? на IIS уже вроде все настройки перепробовала
От IIS практически не зависит.
Насколько я понял, то не работает не все, а именно процедура входа после выхода.
Проблема скорее всего в куках.
Попробуй в Global.asax в обработчике Application_AuthenticateRequest посмотреть на коллекцию Context.Request.Cookies.
Из чего она состоит?
На серваке, на котором все неработает стоит один экземпляр приложения?
Если нет, то надо чтоб у каждого экземпляра приложения название кук были разные. Можно еще попробовать ограничивать куки по пути. Например:
Здравствуйте, Gollum, Вы писали:
G>Здравствуйте, k_2, Вы писали:
k_2>>Дело как я понимаю не в базе данных (xml), возможно ввели в заблуждение комментарии //cut user authentication k_2>>На данный момент отключила проверку пользователя и просто пытаюсь отработать перенаправление между страницам content и logon.
G>Как можно перенаправить к странице content если доступ к ней анонимным пользователям запрещен в веб.конфиг как я понял, а аутентификации не происходит?
Я видимо не так понимаю штото. Опознание пользователя реализовала в простеньком классе
TUsers = class
private
FUserFile: string;
public
constructor Create(path: string);
function GetUserDetails(const UserName : string): TUsersDetails;
function Login(const UserName, Password : String): boolean;
end;
метод Login читает хмл и ищет пользователя с именем и паролем, результат проверяется
procedure TWebForm1.btnLogin_Click(sender: System.Object; e: System.EventArgs);
var
u: TUsers;
begin
u := TUsers.Create(Server.MapPath('./bd_xml/UsersDB.xml'));
try
if u.Login(tbxUser.Text, tbxPassword.Text) then
FormsAuthentication.RedirectFromLoginPage(tbxUser.Text, false)
else
msg.text := 'Што то грозное' //msg - asp:label на login
finally
u.free
end;
end;
при правильном вводе пользователя и в localhost и в интранете при трассировке однозначно попадаю на строчку FormsAuthentication.RedirectFromLoginPage
(tbxUser.Text, false) а вот результат выполнения этой процедуры разный. Ну и наверное если аутенфикации не происходит в интранете то не должно происходить и на localhost? Подскажите тогда какие настройки надо поменять штобы и для localhost пееренаправление на content не проиходило?(шутка)
Здравствуйте, k_2, Вы писали:
k_2>(tbxUser.Text, false) а вот результат выполнения этой процедуры разный. Ну и наверное если аутенфикации не происходит в интранете то не должно происходить и на localhost?
Не факт. Попробуйте почистить куки, потом попытаться сразу на интранет залогиниться.
Здравствуйте, Dronkoff, Вы писали:
D>Здравствуйте, k_2, Вы писали: k_2>>Все работает на localhost и не работает в интранете k_2>>От каких настроек зависит? на IIS уже вроде все настройки перепробовала D>От IIS практически не зависит. D>Насколько я понял, то не работает не все, а именно процедура входа после выхода. D>Проблема скорее всего в куках. D>Попробуй в Global.asax в обработчике Application_AuthenticateRequest посмотреть на коллекцию Context.Request.Cookies. D>Из чего она состоит? D>На серваке, на котором все неработает стоит один экземпляр приложения? D>Если нет, то надо чтоб у каждого экземпляра приложения название кук были разные. Можно еще попробовать ограничивать куки по пути. Например: D>
Здравствуйте, k_2, Вы писали: D>>Здравствуйте, k_2, Вы писали: D>>Проблема скорее всего в куках. D>>Попробуй в Global.asax в обработчике Application_AuthenticateRequest посмотреть на коллекцию Context.Request.Cookies. D>>Из чего она состоит? k_2>спасибо я сейчас все попробую
Так это, что находится в Context.Request.Cookies, если бряку поставить в Application_AuthenticateRequest? k_2>ещё выводила в label k_2>FormsAuthentication.GetRedirectUrl(tbxUser.Text, false) — одинаковое значение в обоих случаях
Какое? k_2>И ещё маленькое уточнение "то не работает не все, а именно процедура входа после выхода." k_2>не работает именно с первого входа а не после выхода
Упс. А когда работет?
Смотри, сама формс аутентификация работает так:
В методе RedirectFromLoginPage происходит не просто редирект, а браузеру отдается кука, содержащая защифрованный ticket FormsAuthentication модуля. А потом происходит сам редирект. После редиректа, при запросе страницы content в событии Application_AuthenticateRequest просиходит дешифровка ticket куки и создание из него класса FormsAuthenticationTicket, затем создается IPrincipal и добавляется к контексту. Если все прошло успешно, то считается что пользователь, обращающийся к ресурсу аутентифицирован, если нет, то он перенаправляется обратно на login page.
90% что проблема с куками. Посмотри какие куки в браузере. какие приходят на сервер и в каком порядке.
У меня один раз ошибочка была связана с тем, что было две одноименных куки — одна пуская, одна с ticket. В коллекции пустая кука всегда была раньше куки с ticket и аутентификация просто не работала, так как не проходила дешифрация ticket.
Попробуй еще удалить все куки из браузера и попробовать заново.
Context.Request.Cookies.Count = 0
k_2>>FormsAuthentication.GetRedirectUrl(tbxUser.Text, false) — одинаковое значение в обоих случаях D>Какое?
/dwork/content.aspx dwork-название виртуального каталога
Здравствуйте, k_2, Вы писали: k_2>в Context.Request.Cookies коллекция пустая как я понимаю она дожна была очиститься лишь по завершении приложения? k_2>бэгиннер в недоумении
Я ж говорил! Там как минимум должна быть кука "pidCookie". login page все прекрасно делает, а вот при следующем запросе происходит бяка.
Может какие-то настройки браузера?
Может у тебя кука слишком больших размеров получается?
Посмотри, какие куки туда-суда ходят.
Есть такая полезная тулза, ieHttpHeaders называется.