0

使用django,我通過Google對用戶進行身份驗證。我收到初始請求令牌&將用戶重定向到谷歌進行身份驗證。之後,谷歌將用戶重定向回我的網站(使用我提供的redirect_url)。Django request.user爲空

此時request.user.idNone所以request.user.username爲什麼會發生這種情況?我需要用戶ID輸入access_tokens(谷歌發送給我的)到數據庫中。

在什麼情況下,Django中的request.user對象是空的?

UPDATE1:,當我從谷歌作爲http://mywebsite.com/lserv?s=goog控制又回到我的Django的看法功能,不過在Django給我request.user對象的用戶作爲一個沒有用戶名或ID匿名用戶重定向的URL模式。爲什麼?

UPDATE2: 這一切對python manage.py runserver現在正在運行...

UPDATE3:任何人都面臨着anythn與此類似?基本上,沒有理由request中的user自動清除&我被指定爲Anonymous用戶。所有這些都發生在來自用戶的url請求(來自瀏覽器)之間。爲什麼?

+0

是否有通過谷歌認證的應用程序?您需要提供更多信息。從你的問題我沒有看到谷歌用戶帳戶與django用戶有什麼關係。您需要將Google用戶本地存儲,並將fk存儲到django用戶。 – pyeleven 2011-03-31 09:11:55

+0

如果您可以訪問屬性,那麼它不是空的。 – 2011-03-31 09:12:12

+0

@ignacio我可以訪問'request.user'但它被分配給匿名用戶 - '(PDB)p request.user .__類__() (PDB) p request.user.id 無 (PDB)p request.user.username ' ' – 2011-03-31 09:14:05

回答

1

Django的身份驗證機制無關與谷歌或任何其它身份驗證服務。如果您想將第三方認證服務與您的Django網站集成,您應該自己做。

如果您使用的oauth2(https://github.com/simplegeo/python-oauth2)庫,它的README(https://github.com/simplegeo/python-oauth2/blob/master/README。 MD)有一個名爲「登錄到Django W/Twitter」的部分可以幫助你。

1

如果您使用的是谷歌的oauth api。爲了讓你有用戶做這樣的事情

from google.appengine.api import oauth 

# ... 
     try: 
      # Get the db.User that represents the user on whose behalf the 
      # consumer is making this request. 
      user = oauth.get_current_user() 

     except oauth.OAuthRequestError, e: 
      # The request was not a valid OAuth request. 
      # ... 
+0

嘿abdul,我沒有使用谷歌的任何應用程序或oauth api。我正在使用'oauth2'庫並在這之上編寫了我的函數......其實我更感興趣的是獲取Django分配給該用戶的用戶ID ...... – 2011-03-31 09:20:49

相關問題