Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Form-based authentication in tomcat


Автор: tamin 27.1.2009, 17:20
Здравствуйте. Точно такая же проблема как и в  http://forum.vingrad.ru/topic-145668.html.
С index.jsp пережожу на login.jsp. При этом если пользователь веден верно, то  ошибка
Код

type Status report

message Invalid direct reference to form login page

description The request sent by the client was syntactically incorrect (Invalid direct reference to form login page).

Я добавила в web.xml
Код

<servlet>
<servlet-name>login</servlet-name>
<servlet-class>login.jsp</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login/</url-pattern>
</servlet-mapping>


соответственно c index.jsp перехожу так <jsp:forward page="/login/login.jsp"/>. Не работает, та же ошибка. Что я делаю не так и что нужно сделать?
Спасибо

Автор: COVD 27.1.2009, 19:28
Если вы используете стандартный встроенный механизм, то необязательно программировать переход на login.jsp. Сам контейнер (Томкат)  делает редирект на эту страницу , когда пользователь обращается к защищенным страницам. И пример описания этих страниц (login и error ) для Form-based authentication  есть в Томкат 6 , в папке examples. Там есть общий web.xml для всех примеров. Фрагмент для примера examples\jsp\security\protected выглядит так :

 
Код

      <security-constraint>
      <display-name>Example Security Constraint</display-name>
      <web-resource-collection>
         <web-resource-name>Protected Area</web-resource-name>
     <!-- Define the context-relative URL(s) to be protected -->
         <url-pattern>/jsp/security/protected/*</url-pattern>
     <!-- If you list http methods, only those methods are protected -->
     <http-method>DELETE</http-method>
         <http-method>GET</http-method>
         <http-method>POST</http-method>
     <http-method>PUT</http-method>
      </web-resource-collection>
      <auth-constraint>
         <!-- Anyone with one of the listed roles may access this area -->
         <role-name>tomcat</role-name>
     <role-name>role1</role-name>
      </auth-constraint>
    </security-constraint>

    <!-- Default login configuration uses form-based authentication -->
    <login-config>
      <auth-method>FORM</auth-method>
      <realm-name>Example Form-Based Authentication Area</realm-name>
      <form-login-config>
        <form-login-page>/jsp/security/protected/login.jsp</form-login-page>
        <form-error-page>/jsp/security/protected/error.jsp</form-error-page>
      </form-login-config>
    </login-config>
        
    <!-- Security roles referenced by this web application -->
    <security-role>
      <role-name>role1</role-name>
    </security-role>
    <security-role>
      <role-name>tomcat</role-name>
    </security-role>    


Автор: tamin 28.1.2009, 11:20
Так как раз в том то и дело, так как должно работать работает с ошибками. Поэтому изменения вносятся в web.xml. Но и с ними у меня не работает.

Автор: garbuz 28.1.2009, 11:23
http://www.onjava.com/pub/a/onjava/2002/06/12/form.html - пример.

Автор: tamin 28.1.2009, 12:36
этим примером я и  рукводствовалась, так как он очень подробный. А что с ошибкой делать?

Автор: COVD 28.1.2009, 14:44
Цитата

Поэтому изменения вносятся в web.xml

Не надо помещать login.jsp в таг servlet. Страницы login и error описываются в таге <login-config> . Попробуйте запустите Томкат и в браузере введите адрес http://localhost:8080/examples/jsp/security/protected . 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)