j_security_check дает 403 страницы, когда имя пользователя и пароль верны - PullRequest
1 голос
/ 02 декабря 2011

Я реализую аутентификацию на основе FORM с помощью j_security_check и Я застрял со следующей проблемой:

Хорошо, вот мои файлы конфигурации: web.xml:

<security-constraint>
<display-name>Efood Security</display-name>
<web-resource-collection>
  <web-resource-name>Secured Area</web-resource-name>
  <url-pattern>/checkout.jspx</url-pattern>
  <url-pattern>/checkout</url-pattern>
</web-resource-collection>
<auth-constraint>
  <role-name>friend</role-name>
</auth-constraint>
</security-constraint>

<login-config>
<auth-method>FORM</auth-method>
<realm-name>Secured eFood Area</realm-name>
<form-login-config>
  <form-login-page>/login.jspx</form-login-page>
  <form-error-page>/error.jspx</form-error-page>
</form-login-config>
</login-config>
<security-role>
  <role-name>10001</role-name>
</security-role>
<error-page>
  <error-code>403</error-code>
  <location>/403.jspx</location>
</error-page>

в server.xml

 <GlobalNamingResources>
 ....
 <Resource driverClassName="org.apache.derby.jdbc.ClientDriver"
 factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" name="jdbc/CSE"
 password="secret" type="javax.sql.DataSource"
 url = "jdbc:derby://hostname:port/DB" username="student" />
 </GlobalNamingResources>
 ....
 <Realm className="org.apache.catalina.realm.LockOutRealm">
 <Realm  className = "org.apache.catalina.realm.DataSourceRealm" 
                driverName="org.apache.derby.jdbc.ClientDriver"
                debug="99"
                dataSourceName = "jdbc/DB" userTable = "users"
                userNameCol = "login" userCredCol="password"
                userRoleTable = "users" roleNameCol = "login" />

  </Realm>

в context.xml

 <ResourceLink type="javax.sql.DataSource" name="jdbc/DB" global="jdbc/DB"/>

Так что моя проблема в том, что я получаю страницу 403 при вводе правильных учетных данных. Если я введу неправильное имя пользователя и пароль, я буду перенаправлен на error.jsp, это означает, что он проверяет БД, однако я не знаю, в чем проблема.

У кого-нибудь были знакомые проблемы с аутентификацией через БД?

Кроме того, я не уверен, как сделать тег secrity-role с именами ролей, поскольку в данной таблице есть только имя пользователя и пароль.

Заранее спасибо!

1 Ответ

2 голосов
/ 02 декабря 2011

Если у вас нет ролей авторизации, используйте

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

и удалить <security-role>.

...