我已經配置我的應用程序以使用基於表單的身份驗證,並在server.xml中設置所需的設置。在tomcat中基於JSP web應用程序的身份驗證
當我試圖訪問受保護的頁面,我正確地重定向到登錄頁面。在登錄頁面上,我提供了正確的用戶名和密碼,但它不會將我登錄,而是顯示登錄錯誤頁面。
我使用Eclipse在Mac OS X上運行非常久遠的MySQL數據庫,Tomcat中的項目提前
感謝。
我已經配置我的應用程序以使用基於表單的身份驗證,並在server.xml中設置所需的設置。在tomcat中基於JSP web應用程序的身份驗證
當我試圖訪問受保護的頁面,我正確地重定向到登錄頁面。在登錄頁面上,我提供了正確的用戶名和密碼,但它不會將我登錄,而是顯示登錄錯誤頁面。
我使用Eclipse在Mac OS X上運行非常久遠的MySQL數據庫,Tomcat中的項目提前
感謝。
終於搞定了這個工作!
由於我使用Eclipse部署應用,日食增加其中包含的server.xml這實際上是當Tomcat是使用eclipse開始使用Tomcat的項目命名的服務器。
因此,解決辦法是使境界更改的server.xml中的服務器項目蝕。
感謝您對所有您的幫助和支持你們。
最好的問候, 查希爾
下面是基於表單的身份驗證在web.xml資源,並聲明部分定義的安全性。
<security-constraint>
<web-resource-collection>
<web-resource-name>profile</web-resource-name>
<url-pattern>/myProfile</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>member</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/signin.jsp</form-login-page>
<form-error-page>/signin_error.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role><role-name>member</role-name></security-role>
這裏是server.xml中的領域定義。
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
driverName="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost/dbname?user=root&password=root"
userTable="users" userNameCol="email" userCredCol="password"
userRoleTable="user_roles" roleNameCol="role_name"/>
此外請注意,我已經在tomcat的lib文件夾中包含了所需的mysql jar文件。
這是我的登錄表單。
試圖幫助我在這裏<form class="form" id="login_form" action="j_security_check" method="post">
<input class="element" id="element_1" style="WIDTH: 255px" maxlength="200" name="j_username"/>
<input class="element" id="element_2" style="WIDTH: 255px" type="password" maxlength="200" name="j_password"/>
</form>
謝謝你們,我真的停留在此!
爲了記錄,這應該已被添加到您的問題,而不是提供作爲答案 – ChssPly76 2009-08-26 19:15:09
您的配置對我來說是正確的。兩個可能的問題:
您是否正在將應用程序部署到非根環境?如果是這樣,您可能需要將表單動作更改爲/j_security_check
。無論如何,你可能會想嘗試這個,實際上 - 我記得一些Tomcat版本對此非常挑剔。
你確定你有users(email, password)
和user_roles(email, role_name)
表與他們相應的行和他們接觸到的領域配置指定的用戶?我知道你說過你是這樣做的,但這是關於唯一可能出錯的其他事情,所以雙重檢查不會受到傷害。
如果沒有上述幫助,我可以建議的唯一的事情是你下載的Tomcat源,並通過它一步的Eclipse下運行一段時間。對於Tomcat 6,你會希望把一個斷點org.apache.catalina.realm.JDBCRealm.authenticate(String username, String credentials)
(線341,雖然我可能沒有最新的源),並通過open()
和第二authenticate()
方法步驟。
ChssPly76,感謝您的答覆。我不明白你說的第一點是什麼意思,但無論如何我都試過了,它不起作用,因爲那時它尋找localhost:8080/j_security_check,這是不合時宜的。我有雙重檢查我的數據庫定義,他們都沒問題。我想我現在沒有選擇,只能通過tomcat的源代碼。我會盡快回復你們。 是的,我的答覆不是作爲回答,而是作爲評論,但我想在回覆中格式化XML和HTML,所以我將其作爲評論發佈。下次我會小心的。 乾杯 – 2009-08-27 12:37:45
您可以發佈您的web.xml,也許一些日誌片斷? – chotchki 2009-08-25 23:41:06
同時在登錄頁 – ChssPly76 2009-08-25 23:44:56
上發佈你的server.xml(你定義Realm的部分)和你的表單聲明。請看下面我的回覆。當我使用eclipse啓動tomcat時,我看不到任何日誌。但是當我單獨啓動tomcat時,我看到日誌並沒有看到任何異常。我還應該提到,我已經界定了必要的表格,並在領域定義中提及了這些表格。 – 2009-08-26 14:28:02