2013-08-18 35 views
0

我在Tomcat 7中使用JDBCRealm。我想構建一個簡單的登錄頁面。 這是我的登錄表單:Tomcat 7 - JDBCRealm登錄

Login Form

和我的web.xml的內容是:

<login-config> 
    <auth-method>FORM</auth-method> 
    <form-login-config> 
     <form-login-page>/user/login.jsp</form-login-page> 
     <form-error-page>/user/login-failed.html</form-error-page> 
    </form-login-config> 
</login-config> 

我想將用戶重定向到一些a.jsp頁面,一旦他被驗證。 我該怎麼做?

回答

0

你沒有。這不是FORM認證的工作方式。用戶請求一個頁面。如果它需要驗證,那麼他們會收到登錄頁面而不是他們請求的頁面。然後他們輸入他們的憑證,並且如果有效的話會得到他們最初請求的頁面。

如果您堅持濫用FORM身份驗證過程,您可以設置org.apache.catalina.authenticator.FormAuthenticator的landingPage屬性。有關完整的詳細信息,請參閱文檔(http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Form_Authenticator_Valve)。

1

事情我明白你想重定向你的用戶取決於角色。假設用戶是管理員,那麼他/她應該被重定向到admin.jsp(例如),如果用戶在管理員角色和他/她應該重定向到manager.jsp。

讓我們假設你在你的JDBCRealm管理員和管理員定義的兩個角色

您可以通過在項目,例如創建一個servlet LoginServlet.java

你必須設置

所以事情做到這一點是:

  1. 如您所述,創建您的login.jsp和login-failed.html。

  2. 創建兩個JSP頁面的動態Web項目的WebContent admin.jsp和manager.jsp任何文件夾下 說:

的WebContent/htmlPages/admin.jsp放在身體標記 <h4>Welcome Admin</h4>文本。

WebContent/htmlPages/manager.jsp put <h4>Welcome Admin</h4>正文標籤中的文字。

  1. 在LoginServlet.jsp在doGet方法 把這個簡單的代碼:

    if(request.isUserInRole("admin")) { response.sendRedirect("htmlPages/admin.jsp");
    } if(request.isUserInRole("manager")){ response.sendRedirect("htmlPages/manager.jsp");
    }

  2. 之後,你必須設置歡迎-文件作爲登錄servletin web.xml中 例如 假設在網絡中。XML你的servlet條目

    <的servlet > <描述> < /描述> <顯示名稱> LoginServlet < /顯示名稱> < servlet的名字> LoginServlet </servlet的名字> < servlet- class > LoginServlet的完整分類名稱</servlet-class >
    </servlet的> < Servlet映射> < servlet的名稱> LoginServlet </servlet的名稱> < URL模式>/loginServlet </URL模式> </Servlet映射>

然後從Servlet映射中獲取url模式,並將其放入歡迎文件列表中,不加斜槓: lik Ë

<歡迎文件列表> <歡迎文件> loginServlet < /歡迎文件> < /歡迎文件列表>

確保沒有斜槓已被列入。歡迎文件屬性應該沒有斜槓,因爲我在代碼loginServlet中。

運行此代碼:-)您將被重定向到適當的jsp頁面。