2011-12-02 130 views
1

我實現與j_security_check和基於FORM的認證 我堅持現在以下問題:j_security_check給403頁時的用戶名和密碼是否正確

確定這裏是我的配置文件: 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角色標記,因爲給定的表只有用戶名和密碼。

在此先感謝!

回答

2

如果你沒有授權角色,使用

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

刪除<security-role>

+0

已經想通了!但謝謝你:) – epema

相關問題