2016-02-04 96 views
0

我會保持簡單,我有一個簡單的網站,其中包含兩個JSP頁面,Main.jsp和Form.jsp,以及每個servlet。JSP用戶驗證和跟蹤

在Main.jsp中,用戶將輸入用戶名和密碼,如果數據匹配,我將它們與SQL存儲的數據進行比較,如果不是,則重新導向用戶到Form.jsp,然後重新加載Main.jsp。

這真是太棒了,直到我意識到任何人都可以輸入Form.jsp的URL並訪問頁面並跳過第一個驗證頁面。

我是網絡開發新手,這是什麼解決方案?,有沒有某種會話管理器?

我不僅想要控制對From.jsp的訪問,但我也想知道哪個用戶填充了表單,而不是任何具有url的隨機用戶,表單可以填充它(直接從Form.jsp更新SQL表,我想存儲更新表的人的用戶名)。

回答

0

您可以使用過濾器來完成此任務。

http://www.journaldev.com/1933/java-servlet-filter-example-tutorial

+0

謝謝,看起來有用,有點TL; DR,但我會​​確保我讀了它。 –

+0

「給一個男人一條魚,你喂他一天;教一個男人去釣魚,你給他一輩子的食物」這個環節很棒,我詳細閱讀並且非常有幫助。 您的答案獲得我的投票。 –

+0

謝謝,你也歡迎。 :) –

0

驗證後,您可能需要在用戶會話存儲某種象徵,表明用戶正確認證的。例如:UserId。然後,對於所有其他請求,應檢查此令牌是否存在。如果它不存在,那麼需要將用戶重定向到登錄頁面。你也許可以做認證檢查中ServletFilter中在web.xml

<filter> 
    <filter-name>ValidationFilter</filter-name> 
    <filter-class>ValidationFilter</filter-class> 
    </filter> 

    <filter-mapping> 
    <filter-name>ValidationFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 

+0

這個令牌的存儲位置在哪裏? 像一個cookie或什麼? –

+0

@AhmadLabibMansour它應該存儲在用戶會話中。 request.getSession() –

0

添加過濾條目,並在您的項目

public class ValidationFilter implements Filter { 
     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) { 
       chain.doFilter(new ValidatingHttpRequest((HttpServletRequest)request), response); 
     } 
    } 

添加類定製按您的需求量的