2012-10-02 69 views
2

我正在嘗試在本地開發服務器上使用App Engine的UserService,它的行爲並不像我期望的那樣。我搜索論壇的問題的答案,但找不到任何具體解決我的問題。App Engine開發服務器無法檢測登錄用戶

我做的第一件事就是從U​​serService得到一個登錄網址如下:

UserService userService = UserServiceFactory.getUserService(); 
if(userService.isUserLoggedIn()) 
    String loginURL = userService.createLoginURL("/mycallbackservlet"); 
else 
    ... do something else 

假設用戶是不是在最初登錄,我提供了一個「mycallbackservlet」作爲目標URL重定向到後(成功)登錄。要啓動登錄過程我打開在客戶端一個GWT窗口如下:

Window.open(loginURL, "Bla", props); 

的loginURL是上面創建的一個。我將看到本地開發服務器的模擬登錄屏幕,您可以在其中鍵入任何用戶。我只需點擊確定。現在,我的回調的servlet調用(如預期),但是當我檢索UserService對象再次它不給我登錄的用戶,這是

UserServiceFactory.getUserService().isUserLoggedIn() 

回報「假」。怎麼會這樣?這是典型的開發服務器行爲還是我做錯了什麼?我是否應該以不同的方式打開最初的URL,即不是使用Window.open(),而是使用其他的東西?

任何建議將不勝感激!

回答

0

看起來您是在用戶已經登錄時創建登錄網址嗎?它不應該是反過來:

if(!userService.isUserLoggedIn()) 
    String loginURL = userService.createLoginURL("/mycallbackservlet"); 
0

HttpServletRequest的有方法的方法

  • getRemoteUser()
  • getUserPrincipal()
  • 的isUserInRole(字符串角色)

這對你的情況可能有用。

相關問題