Здравствуйте, 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 называется.
Здравствуйте, Dronkoff, Вы писали:
D>Здравствуйте, k_2, Вы писали: k_2>>в Context.Request.Cookies коллекция пустая как я понимаю она дожна была очиститься лишь по завершении приложения? k_2>>бэгиннер в недоумении D>Я ж говорил! Там как минимум должна быть кука "pidCookie". login page все прекрасно делает, а вот при следующем запросе происходит бяка. D>Может какие-то настройки браузера? D>Может у тебя кука слишком больших размеров получается? D>Посмотри, какие куки туда-суда ходят. D>Есть такая полезная тулза, ieHttpHeaders называется.
Спасибо большое, тулза очень полезная, куки и в самом деле не создавались уже и уровень конфиденциальности в настройках ие самый нижний — безрезультатно. Ещё выяснилось што при переходе по страницам на локалхосте (ieHttpheader показал) SessionID остается одинаковым а в интранете SessionID меняется, то есть получается сессия перезапускается и отсюда понятно почему куков нет — они оcтались в предыдущей сессии, вот такое забавное поведение. Никаких настроек в IISе я не меняла, специально переставила с настройками по умочанию. Однако у меня XP и оказалось што на Windows Server 2003 абсолютно то же самое работает нормально, в итоге переставлю систему хотя конешно интересно отчего это зависело .
Здравствуйте, k_2, Вы писали: D>>Посмотри, какие куки туда-суда ходят. D>>Есть такая полезная тулза, ieHttpHeaders называется. k_2>Спасибо большое,
Всегда пожалста k_2>тулза очень полезная, куки и в самом деле не создавались
Точнее сказать браузер их не запоминал. k_2>Ещё выяснилось што при переходе по страницам на локалхосте (ieHttpheader показал) SessionID остается одинаковым а в интранете SessionID меняется, то есть получается сессия перезапускается и отсюда понятно почему куков нет — они оcтались в предыдущей сессии, вот такое забавное поведение.
Точнее наоборот. Так как SessionId передается в куке(а она не запоминается), то каждый новый запрос не сопоставляется с существующей сессией и для него заводится новая сессия с новым SessionId. Куки не живут в сессии. Куки — это атрибут запроса/ответа, а сессия это суррогатная сущность, поддерживаемая с помошью куков. k_2>Никаких настроек в IISе я не меняла, специально переставила с настройками по умочанию. Однако у меня XP и оказалось што на Windows Server 2003 абсолютно то же самое работает нормально, в итоге переставлю систему хотя конешно интересно отчего это зависело .
Причина — это самое интересное. А, случайно, в названии компьютера нет символа "_"? Типа "my_workstation"?
А если попробовать оперой по сайту(через сеть)походить или чем-нить еще, будет работать?
D>Точнее наоборот. Так как SessionId передается в куке(а она не запоминается), то каждый новый запрос не сопоставляется с существующей сессией и для него заводится новая сессия с новым SessionId. Куки не живут в сессии. Куки — это атрибут запроса/ответа, а сессия это суррогатная сущность, поддерживаемая с помошью куков.
Очень интересно спасибо, теперь понятно
D>Причина — это самое интересное. А, случайно, в названии компьютера нет символа "_"? Типа "my_workstation"? D>А если попробовать оперой по сайту(через сеть)походить или чем-нить еще, будет работать?
Да в названии компьютера есть "_". Сайт — пожалуй громко будет сказано просто корпоративный узел, даже узелок к сожалению с оперой(7) пока не выходит — недавно поменяли прокси — ISA сервер с авторизацией и пока не удается настроить. ИЕ с другого компа тоже дальше логина пройти не может. Попробовала перенести узел на другую машину (XP, название тоже my_workstation подобное, других нет) — не работает. В общем докидываю музыку и иду дружить с системщиками Спасибо за помощь и хорошего дня
Здравствуйте, k_2, Вы писали: k_2>Смена оси не помогла, а изменение имени компьютера сработало
Вот где, блин, собака порылась!
Получается что IE либо не сохраняет, либо не передает куки, полученные от серверов, в названиях которых есть символ подчеркивания.
Интересно, это фича или бага?
В RFC 1738 (Uniform Resource Locators) сказано:
host
The fully qualified domain name of a network host, or its IP
address as a set of four decimal digit groups separated by
".". Fully qualified domain names take the form as described
in Section 3.5 of RFC 1034 [13] and Section 2.1 of RFC 1123
[5]: a sequence of domain labels separated by ".", each domain
label starting and ending with an alphanumerical character and
possibly also containing "-" characters. The rightmost domain
label will never start with a digit, though, which
syntactically distinguishes all domain names from the IP
addresses.
<letter> ::= any one of the 52 alphabetic characters A through Z in
upper case and a through z in lower case
<digit> ::= any one of the ten digits 0 through 9
The labels must follow the rules for ARPANET host names. They must
start with a letter, end with a letter or digit, and have as interior
characters only letters, digits, and hyphen. There are also some
restrictions on the length. Labels must be 63 characters or less.
Т.е. имя хоста может состоять только из цифр, букв и тире.
В принципе, IE емеет полное право глючить если имя хоста не удовлетворяет стандартам. Только делает он это каким-то странным образом — втихаря угнетая бедные куки...
В общем, такое поведение надо просто помнить. И всегда давать компьютеру правильное название, дабы избежать странных глюков в последствии. k_2>спасибо
Как говорит один мой знакомый: "Есть за что"
Здравствуйте, Dronkoff, Вы писали:
k_2>>Смена оси не помогла, а изменение имени компьютера сработало D>Вот где, блин, собака порылась! D>Получается что IE либо не сохраняет, либо не передает куки, полученные от серверов, в названиях которых есть символ подчеркивания.
... D>Т.е. имя хоста может состоять только из цифр, букв и тире. D>В принципе, IE емеет полное право глючить если имя хоста не удовлетворяет стандартам. Только делает он это каким-то странным образом — втихаря угнетая бедные куки... D>В общем, такое поведение надо просто помнить. И всегда давать компьютеру правильное название, дабы избежать странных глюков в последствии.
...
Я так понял, имеется ввиду имя сервера, на котором размещена страница? И как тогда сменить его имя, если я не имею к нему доступа?
К тому же его имя: "RU", т.е. не имеет никаких "лишних" символов, а проблема остается.
Здравствуйте, Daenur, Вы писали: k_2>>>Смена оси не помогла, а изменение имени компьютера сработало D>Я так понял, имеется ввиду имя сервера, на котором размещена страница? И как тогда сменить его имя, если я не имею к нему доступа? D>К тому же его имя: "RU", т.е. не имеет никаких "лишних" символов, а проблема остается.
У тебя в чем-то другом проблема!