2012-05-15 53 views
8

想知道如果通過調用user.getUserId()返回的userId應該被視爲一個祕密,還是可以在公共URL中使用?例如,個人資料頁面網址看起來像http://example.com/userprofile/11901930903930,其中11901930903930是Appengine上Google生成的用戶ID。Google Appengine用戶應該被視爲祕密嗎?

這是我們正在使用以獲取用戶標識的功能:

UserService userService = UserServiceFactory.getUserService(); 
User user = userService.getCurrentUser(); 

String id = user.getUserId(); 

回答

11

其實,我發現在谷歌這樣的信息和得出的結論是,他們不應被公開使用。

從谷歌:

訪問帳戶信息

當一個用戶登錄到一個應用程序,該應用程序可以爲每個請求的用戶訪問該帳戶的電子郵件地址或OpenID標識符使該應用程序。即使用戶更改了她的帳戶的電子郵件地址,該應用也可以訪問唯一標識該用戶的用戶標識。

該應用還可以確定當前用戶是否是該應用的管理員(「開發者」)。即使您未認證其他用戶,您也可以使用此功能爲應用程序構建管理功能。 Go,Java和Python API使得將URL配置爲「僅限管理員」變得很容易。

注意:每個用戶的所有App Engine應用程序都有相同的用戶ID。如果您的應用程序在公共數據中使用用戶標識(例如通過將其包含在URL參數中),則應使用添加了「salt」值的散列算法來隱藏標識。公開原始ID可能允許某人將用戶的某個應用的活動與另一個應用的活動相關聯,或者通過強制用戶登錄另一個應用來獲取用戶的電子郵件地址。

Link to page