如何在多個Web專案中共享資訊,歡迎討論

lijian發表於2004-10-15
問題提出:如果使用者在一個Web專案中登入並儲存了使用者資訊,然後又跳轉到另一個Web專案中(只能是超鏈或者sendRedirect),然而在第二個Web專案中要用到使用者的基本資訊和他對第二個Web專案中相應模組的操作許可權(如頁面內某些按鈕是否可操作,這個許可權應該在他跳轉前初始化好),那麼,怎麼在第二個Web專案的相應模組中安全的獲取所需要的資訊呢?並且,如果使用者直接輸入第二個Web專案的那個模組,應該不允許訪問,因為他沒有經過第一個Web專案進行認證。如果把使用者的資訊以引數的形式寫在那個地址的後面,這樣也是不安全的,因為如果記住了那些引數,就可以直接進入模組了。
我的解決方法:
方法1:在第一個Web中儲存使用者資訊到資料庫中,並把一個認證碼發個第二個Web,緊接著在第二個Web中根據認證碼讀取,讀完後刪除。如果讀取讀取不到,那麼報錯,說明使用者無權訪問。如果讀取到了,那麼顯示,並且把這條記錄刪除,以免別人再去讀取。在資料庫中的記錄主鍵可以用session id,這樣保證使用者每次登入都是不同的,以免下次(或別人)直接透過該認證碼讀取資料。
方法2:上面的這種方法是透過資料庫中轉,可能速度有點慢。可以把使用者的資訊和操作許可權儲存到第一個Web中的一個靜態Map中,作一個Servlet專門負責與第二個Web通訊,傳送給第二個Web的引數除了那個認證碼,還要有第一個Web的地址,第二個Web獲取通訊地址,根據認證碼透過Url的connection來取得Servlet中的資訊,同樣,取走後刪除資訊。也就是說,方法1透過資料庫中轉,方法2透過一個靜態的Map(或其他的東西,但要保證多使用者訪問)中轉。

我不知道還有沒有其他更好的方法,希望大家討論。
還有,方法1效率低,方法2速度快,我認為比較好,但是如果第一個Web是釋出在一個叢集中,那怎麼辦呢?這是我正面臨的問題!

相關文章