Здравствуйте, Denis Popov, Вы писали:
DP>Допустим, есть некий набор JSP-страниц, требующих указания логина и м.б. пароля для доступа к ним. В примере struts-example за это отвечает тег checkLogon и класс CheckLogonTag. Охота сделать так, чтобы пользователь, в случае успешного логина, возвращался именно на ту страницу, откуда его "послали" на регистрацию. Но классы-наследники Action заканчиваются как правило фразой: DP>
DP>return (mapping.findForward("success"));
DP>
DP>Если ли возможность значение этого форварда сделать динамическим, т.е. направлять туда, откуда пошел запрос на регистрацию? Пока сделал свое, через расширение тега checkLogon, добавил атрибут forward. Но м.б. существует уже готовое решение?
Вообще если использовать стандартный FORM authentification (from Servelet specification), реализованный, например в томкате, то так оно и будет. При этом придется отказаться от CheckLogonTag.
DP>И еще вопрос, из серии красивостей — можно ли после форварда из Actiona показывать в адресной строке браузера имя страницы, на которую пришли, а не имя действия?
А в чем красивость то? По идее после выполнения Actiona мв можеи и не попасть на "страницу", если не используем для рендеринга JSP, или JSP может лежать в недоступном для прямого просмотра из браузера мета (например в каталоге WEB-INF). Что тогда плоказывать? И вообще, показ строки в браузере — это вещь сугубо клиентская, и если надо поменять командную строку и браузер это позволяет — пожалуйста. Выводи имя страница в HTML хидден поле и затем скрипто впечатывай в строку, но, ИМХО, это изврат какой-то. В строке должно бытьто — что нам формирует ответ на наш запрос.
... << Rsdn@Home 1.1.4 beta 1 >>
Struts Form-based authentication - возврат на страницу
Допустим, есть некий набор JSP-страниц, требующих указания логина и м.б. пароля для доступа к ним. В примере struts-example за это отвечает тег checkLogon и класс CheckLogonTag. Охота сделать так, чтобы пользователь, в случае успешного логина, возвращался именно на ту страницу, откуда его "послали" на регистрацию. Но классы-наследники Action заканчиваются как правило фразой:
return (mapping.findForward("success"));
Если ли возможность значение этого форварда сделать динамическим, т.е. направлять туда, откуда пошел запрос на регистрацию? Пока сделал свое, через расширение тега checkLogon, добавил атрибут forward. Но м.б. существует уже готовое решение?
И еще вопрос, из серии красивостей — можно ли после форварда из Actiona показывать в адресной строке браузера имя страницы, на которую пришли, а не имя действия?
Re[2]: Struts Form-based authentication - возврат на страниц
Здравствуйте, Lucker, Вы писали:
DP>>И еще вопрос, из серии красивостей — можно ли после форварда из Actiona показывать в адресной строке браузера имя страницы, на которую пришли, а не имя действия? L>А в чем красивость то? По идее после выполнения Actiona мв можеи и не попасть на "страницу", если не используем для рендеринга JSP, или JSP может лежать в недоступном для прямого просмотра из браузера мета (например в каталоге WEB-INF). Что тогда плоказывать? И вообще, показ строки в браузере — это вещь сугубо клиентская, и если надо поменять командную строку и браузер это позволяет — пожалуйста. Выводи имя страница в HTML хидден поле и затем скрипто впечатывай в строку, но, ИМХО, это изврат какой-то. В строке должно бытьто — что нам формирует ответ на наш запрос.
К сожалению, это физически не возможно. А хотелось бы вместо /SubmiThirdForm.do получить /third/loggedin.jsp
Re[3]: Struts Form-based authentication - возврат на страниц
Здравствуйте, Rumata, Вы писали:
R>К сожалению, это физически не возможно. А хотелось бы вместо /SubmiThirdForm.do получить /third/loggedin.jsp
А как решается задача с указанием относительного пути к файлу стилей? Ситуация такая: есть некий jsp, по адресу host/project/jsp/page.jsp, т.е. он находится в подкаталоге от корня проекта project. Файл .css лежит так же в каталоге jsp. На страницу page.jsp можно попасть напрямую, по ее адресу, либо через некий action. Но при переходе по action стили не цепляются, поскольку, как я думаю, файл ищется в корне проекта, а не в директории. Варианты:
— указывать абсолютный путь к файлу стиля;
— запретить доступ к jsp страницам вообще, только через действия;
— изменить имя действия, довавив к нему имя каталога (не проверял еще).
Может есть еще варианты?
Re[4]: Struts Form-based authentication - возврат на страниц
Здравствуйте, Denis Popov, Вы писали: DP>А как решается задача с указанием относительного пути к файлу стилей? Ситуация такая: есть некий jsp, по адресу host/project/jsp/page.jsp, т.е. он находится в подкаталоге от корня проекта project. Файл .css лежит так же в каталоге jsp. На страницу page.jsp можно попасть напрямую, по ее адресу, либо через некий action. Но при переходе по action стили не цепляются, поскольку, как я думаю, файл ищется в корне проекта, а не в директории. Варианты:
DP>- указывать абсолютный путь к файлу стиля; DP>- запретить доступ к jsp страницам вообще, только через действия; DP>- изменить имя действия, довавив к нему имя каталога (не проверял еще).
DP>Может есть еще варианты?
1. Прямой доступ к .jsp закрывается, все идет через actions
2. Наследуем Struts controller и переписываем processRoles() — чтобы он делал все что нам нужно — проверяем авторизацию, запоминаем куда запрос, переходим к процедуре авторизации
вот и все и не надо никаких пошлых тегов,для этого контроллер и нужен — чтобы была одна точка входа в приложение
Здравствуйте, Denis Popov, Вы писали:
DP>Допустим, есть некий набор JSP-страниц, требующих указания логина и м.б. пароля для доступа к ним. В примере struts-example за это отвечает тег checkLogon и класс CheckLogonTag. Охота сделать так, чтобы пользователь, в случае успешного логина, возвращался именно на ту страницу, откуда его "послали" на регистрацию. Но классы-наследники Action заканчиваются как правило фразой: DP>
DP>return (mapping.findForward("success"));
DP>
DP>Если ли возможность значение этого форварда сделать динамическим, т.е. направлять туда, откуда пошел запрос на регистрацию? Пока сделал свое, через расширение тега checkLogon, добавил атрибут forward. Но м.б. существует уже готовое решение?
DP>И еще вопрос, из серии красивостей — можно ли после форварда из Actiona показывать в адресной строке браузера имя страницы, на которую пришли, а не имя действия?
Re: Struts Form-based authentication - возврат на страницу
DP>Допустим, есть некий набор JSP-страниц, требующих указания логина и м.б. пароля для доступа к ним. В примере struts-example за это отвечает тег checkLogon и класс CheckLogonTag. Охота сделать так, чтобы пользователь, в случае успешного логина, возвращался именно на ту страницу, откуда его "послали" на регистрацию. Но классы-наследники Action заканчиваются как правило фразой: DP>
DP>return (mapping.findForward("success"));
DP>
DP>Если ли возможность значение этого форварда сделать динамическим, т.е. направлять туда, откуда пошел запрос на регистрацию? Пока сделал свое, через расширение тега checkLogon, добавил атрибут forward. Но м.б. существует уже готовое решение?
CheckLogonTag — проверяет сессию на наличие в ней определенных параметров, и если не находит выкидывает на login.jsp
проще написать фильтр, который будет делать то же самое, но перед тем как перекинуть на login.jsp он сохранит строку старого запроса в сессию, а в обработчике LoginAction в случае успеха перенаправить на старый запрос(взятый из сессии) вместо форварда на mapping.findForward("success"));
кароче смотри что такое <filter> в web.xml
... << RSDN@Home 1.1.4 @@subversion >>
Re[2]: Struts Form-based authentication - возврат на страниц
От:
Аноним
Дата:
29.05.05 22:07
Оценка:
Здравствуйте, dualsoul, Вы писали:
D>Сделай вот так
D>1. Прямой доступ к .jsp закрывается, все идет через actions D>2. Наследуем Struts controller и переписываем processRoles() — чтобы он делал все что нам нужно — проверяем авторизацию, запоминаем куда запрос, переходим к процедуре авторизации
А как выполнить пункт № 1 ?
Re: Struts Form-based authentication - возврат на страницу
Здравствуйте, Denis Popov, Вы писали:
DP>Допустим, есть некий набор JSP-страниц, требующих указания логина и м.б. пароля для доступа к ним. В примере struts-example за это отвечает тег checkLogon и класс CheckLogonTag. Охота сделать так, чтобы пользователь, в случае успешного логина, возвращался именно на ту страницу, откуда его "послали" на регистрацию. Но классы-наследники Action заканчиваются как правило фразой: DP>
DP>return (mapping.findForward("success"));
DP>
DP>Если ли возможность значение этого форварда сделать динамическим, т.е. направлять туда, откуда пошел запрос на регистрацию? Пока сделал свое, через расширение тега checkLogon, добавил атрибут forward. Но м.б. существует уже готовое решение?
DP>И еще вопрос, из серии красивостей — можно ли после форварда из Actiona показывать в адресной строке браузера имя страницы, на которую пришли, а не имя действия?
Мне кажется, что проще и правильнее использовать JAAS аутентификацию, которая прописывается, через web.xml. Она работает на уровне контерйнера и делает как раз то, что тебе надо.
Насчет красивостей — лучше этого не делать, хорошая практика — вообще закрыть доступ к JSP напрямую.
Re[3]: Struts Form-based authentication - возврат на страниц
Здравствуйте, Denis Popov, Вы писали:
D>>>1. Прямой доступ к .jsp закрывается, все идет через actions
А>>А как выполнить пункт № 1 ?
DP>web.xml
DP>Для тех страниц, у которых нет "предварительного" action'а, прописываешь в struts-config.xml:
DP>
мне больше нравится вариант, когда все jsp кладутся в WEB-INF, например в WEB-INF/jsp/.
В таком случае доступа к ним из-вне нету а приложение может до них достучаться по адресу типа
Здравствуйте, Denis Popov, Вы писали:
DP>Если ли возможность значение этого форварда сделать динамическим, т.е. направлять туда, откуда пошел запрос на регистрацию? Пока сделал свое, через расширение тега checkLogon, добавил атрибут forward. Но м.б. существует уже готовое решение?
Уже ответили выше.
DP>И еще вопрос, из серии красивостей — можно ли после форварда из Actiona показывать в адресной строке браузера имя страницы, на которую пришли, а не имя действия?
Можно.
В struts-confix.xml указываете:
<forward name="bla" path="/bla/blabla.jsp" redirect="true" />