2011-08-25 38 views
1

我一直在學習Google AppEngine幾個星期......現在我正在將它與Gwt集成到我的Web應用程序中。AppEngine:創建我自己的UserService?

「留言」GAE教程非常有趣,如果你知道我在說什麼。

我喜歡與谷歌帳戶的那麼容易整合,這是非常有用的,但...

我的客戶不感興趣,他要標準,經典的認證系統。

因此,我將在數據存儲中擁有自己的「用戶」實體,依此類推。我可以做到這一點。

我不能做的是創建我自己的UserService,用於檢查無論我的應用程序中的哪個用戶登錄或沒有登錄。

我的意思是我不擅長管理會話,餅乾或任何需要達到我的目標。你能幫助我嗎?

+0

你看過聯邦身份驗證選項嗎?如果他們不需要Google登錄,那麼OpenID有什麼問題? –

+0

@尼克老實說,我認爲這是一個有效的請求。雖然有很多人喜歡單點登錄,但我至少遇到了相同數量的用戶(特別是Google生態系統以外的用戶),他們覺得這很令人困惑和/或煩人。缺乏單一註銷解決方案尤其麻煩。 –

+0

@Kevin我並不反對 - 但OP沒有提及考慮過OpenID,所以我認爲這值得一提。有人可能希望避免常規用戶API,但仍然對OAuth感到滿意。 –

回答

7

如果您唯一的問題是要知道用戶是否已登錄,那麼解決方案很簡單。

認證代碼,一旦用戶通過驗證:

request.getSession().setAttribute("loggedIn", Boolean.TRUE); 

港九代碼:

boolean loggedIn = request.getSession().getAttribute("loggedIn") != null; 

如果你有一個 「退出」 動作:

request.getSession().removeAttribute("loggedIn"); 

會話中的屬性存儲在服務器端。它們不會作爲cookie發送給客戶,因此不存在安全風險。

+0

在我的用例中,在任何Gwt RemoteServiceServlet擴展中,我將檢查請求/會話,並且我做到了! :)無論如何,你提到「你唯一的問題」就像是有更多東西需要知道有一個好的認證系統一樣。你什麼意思? –

+1

我的意思是說,通常困難的部分不是如何檢查用戶是否已通過身份驗證,而是如何安全地進行身份驗證(醃製和散列密碼等),如何確保整個網址只能通過身份驗證用戶無需強制顯式檢查所有受保護的資源(使用過濾器是一個很好的解決方案),以及如何將用戶重定向到登錄頁面,對其進行身份驗證,然後將其重定向到他想要訪問的頁面。 –