2010-12-10 3 views
1

Я хочу сделать аутентификацию под контролем Tomcat. Чтобы проверить его, я создал простые страницы, страницу входа и loginError.
Аутентификация, похоже, сработала. Когда я ввожу неправильный логин или пароль, я вижу страницу loginError. Но когда я ввожу правильный логин и пароль, которые я вижу:Ошибка во время FORM auth в Tomcat

type Status report 

message Access to the requested resource has been denied 

description Access to the specified resource (Access to the requested resource has been denied) has been forbidden. 

Вот моя web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <security-constraint> 
     <web-resource-collection> 
      <url-pattern>/protected.jsp</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <role-name>*</role-name> 
     </auth-constraint> 
    </security-constraint> 
    <login-config> 
     <auth-method>FORM</auth-method> 
     <form-login-config> 
      <form-login-page>/login.jsp</form-login-page> 
      <form-error-page>/loginError.jsp</form-error-page> 
     </form-login-config> 
    </login-config> 

    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

Вот мой кот-users.xml

<tomcat-users> 

    <role rolename="tomcat"/> 
    <role rolename="admin"/> 
    <role rolename="manager"/> 
    <user password="tomcat" roles="tomcat,manager,admin" username="tomcat"/> 
    <user password="proger" roles="tomcat" username="proger"/> 
</tomcat-users> 

Мой Логин. jsp выглядит так:

<html> 
    <body> 
     <form id="loginForm" method="post" action="j_security_check"> 
      <p> 
       Username: <input type="text" name="j_username" id="j_username" /> 
       <br/> 
       Password: <input type="password" name="j_password" id="j_password" /> 
       <br/> 
       <button type="submit">login</button> 
      </p> 
     </form> 
    </body> 
</html> 

Я использую его Я использую NetB 6.9.1. Я использую Tomcat 6.0.29. Что может быть неправильным? Спасибо заранее.

+0

Попробуйте указать явное имя роли, например 'tomcat', а не подстановочный знак' * '. Я вспоминаю некоторые проблемы, связанные с этим, но я был бы удивлен, если это не исправлено в последнем Tomcat 6, который у вас там есть. – BalusC

+0

Не фиксировано. Спасибо за ваш совет. Это помогло. –

ответ

1

Использование

<auth-constraint> 
     <role-name>*</role-name> 
    </auth-constraint> 

требует, чтобы вы также определить «действительные» роли

<security-role> 
     <role-name>admin</role-name> 
</security-role> 
<security-role> 
    <role-name>user</role-name> 
</security-role> 

Если пользователь вводит действительное имя/пасс, но только в роли «болван», они get access denied

Смежные вопросы