2011-06-29 42 views
1

我正在使用GAE用戶服務驗證我的GWT應用程序。 取決於用戶是否登錄,用戶將看到LoginPage/Dashboard。GWT和AppEngine用戶服務

的GWT應用程序調用Servlet的驗證(Window.Location.assign(「/ googleauth」);導致應用程序卸載,然後把控制權交給谷歌認證頁面,認證通過後,我們將被重定向到回呼Servlet

我可以檢查用戶是否在回調Servlet的成功的loggedIn但是,如果我只是重定向到我的應用程序會話登錄丟失

從頭加載應用程序

如果我設置了一個cookie - 。>

HttpSession session = request.getSession(); String sessionid = session.getId(); //獲取sessionID 服務器對您登錄的回覆 請求 Cookie cookie = new Cookie(「sid」,sessionid); response.addCookie(cookie); response.sendRedirect(AppURL.getApplicationBaseURL());

以我的客戶端代碼校驗 - >

字符串的sessionID = Cookies.getCookie( 「SID」); 如果(會話ID!= NULL){//顯示 儀表盤}

是我使用安全的方法是什麼? cookies有效期多長?

回答

1

你說:

I simply redirect back to my application the session login is lost. 

這是不應該發生的。一旦你登錄會話應該在那裏,直到你註銷或會話超時(你可以在GAE設置中設置)。

您可以簡單地對服務器進行GWT-RPC調用,並檢查用戶是否已登錄:UserServiceFactory.getUserService().isUserLoggedIn()

注意:如果您在尋找會話cookie,AppEngine會在生產和開發服務器中使用不同的cookie名稱。它使用生產中的ACSID cookie和dev_appserver_login

+0

是的,我只是重新回到使用response.sendRedirect(「」);我做了一個GWT RPC調用,對於登錄的用戶我得到了錯誤信息.App Engine引擎設置有Cookie過期時間1天設置 –

+0

嘗試檢查CallBack servlet和您的GWT頁面上的'ACISD'(或'dev_appserver_login')cookie的值。 同時檢查ACSID cookie的路徑(在瀏覽器中)。 –

+0

即時消息使用類似的設置給你:我有一個GWT頁面,在需要時轉發到登錄頁面。登錄頁面是JSP(OpenID),選擇它轉發到Google登錄頁面。登錄Google時會直接重定向到我的GWT頁面。我沒有中間回調頁面。一切按預期工作。 –