2009-09-28 57 views
2

這是一個非常基本的JSP問題,因爲我仍然試圖理解正確的做事方式。如何在JSP中實現登錄系統

我正在開發一個web應用程序,它需要用戶在工作之前登錄。我想要發生的是,只要沒有登錄的用戶嘗試訪問任何頁面(登錄頁面除外),用戶就會被重定向到我的登錄頁面。

我選擇的方法只是在每個頁面的頂部添加一些代碼,試圖從會話中獲取用戶對象,如果它不存在,重定向到登錄(I有一個用戶對象存儲在會話中存在的用戶,其中包含其他詳細信息,如權限)。

這是進行身份驗證的正確方法嗎?還是有更多的標準方法,我應該看看?

編輯:我決定把這個問題分成兩個問題,因爲一個問題更多的是最佳實踐問題,另一個問題是純技術問題。感謝您的迴應。

回答

5

我不知道您是否有此選擇,但使用Java EE聲明性安全性將使您無需將驗證代碼放入每個JSP中。

的想法是,在你的web.xml指定的安全規則,如: URL模式只能由用戶在訪問,當用戶試圖訪問受保護的 role.The容器會再挑戰資源。您可以指定自己的登錄頁面,以便在用戶遇到問題時使用。

我認爲這對編碼自己的登錄非常完美。

這裏是一個link來描述如何做到這一點。

+0

確實......聲明式安全(使用JEE或其他實現)是處理身份驗證的更簡潔更安全的方式。 – jsight 2009-09-28 13:27:13

+0

謝謝,這實際上不是我現在可以走的方向,但我一定會考慮未來的項目。 – 2009-09-28 13:31:03

+1

注意還有兩種安全約束:(1)基於角色,(2)基於用戶。 樣式1主要在企業(內聯網)內部看到,並且如djna所述,通過Servlet規範(通過web.xml中的安全設置)可以很好地處理樣式1。樣式2主要用於公共Web應用程序,其中只有數據的「所有者」可以對其執行某些操作(例如更改,刪除)。 樣式2不由Servlet規範處理。一些網絡應用程序框架可以爲您處理。 – 2009-09-28 23:59:33

1

是,JSP被編譯成servlet中的子類。早期迴歸的正確方法是簡單地放置一個「迴歸」。在你的JSP中。

話雖如此,我認爲你應該考慮其他認證解決方案。它很容易落得無意中忘了包括1 JSP的頂部,然後你就會在該網頁上無意中允許Guest用戶!

+0

感謝您的回答。由於這個問題很長,實際上問了兩件事,我決定把問題分成兩部分(爲了將來更容易獲得)。我會很感激,如果你可以發佈你的答案再次出現: http://stackoverflow.com/questions/1487080/how-to-stop-processing-a-jsp-early 謝謝,對不起,混亂:) – 2009-09-28 13:38:45