我在我的GAE應用程序中使用Alex(https://github.com/crhym3/simpleauth)的SimpleAuth。我在我的基本模板中有一個Jquery Powered登錄框,這意味着用戶可以從應用程序內部的任何URL登錄。我希望用戶重定向到他們請求登錄的頁面。有沒有什麼辦法可以通過Oauth2實現這一點,或者我們可以將用戶重定向到只有特定的網址?Google App Engine:SimpleAuth:重定向網址
回答
如果您使用的是SimpleAuth,我認爲您可能使用了webapp2,因此@ jmort253示例並不完全如何做(例如,webapp2具有內置會話,爲什麼還要使用另一個庫來處理會話) 。
雖然在概念上它是正確的:你需要的是在開始認證過程之前在會話的某個地方存儲原始URL。然後在成功驗證後,使用該存儲的URL進行最終重定向。
從SimpleAuth的示例應用程序代碼開始,基本上需要更改的是last line of _on_signin()將用戶重定向到它們來自的原始URL(而不是'/ profile')。
要存儲原始請求的URL,您可以使用簡單的包裝,例如現在
def simpleauth_login_required(handler_method):
"""A decorator to require that a user be logged in to access a handler.
To use it, decorate your get() method like this:
@simpleauth_login_required
def get(self):
user = self.current_user
self.response.out.write('Hello, ' + user.name())
"""
def check_login(self, *args, **kwargs):
if self.request.method != 'GET':
self.abort(400, detail='The login_required decorator '
'can only be used for GET requests.')
if self.logged_in:
handler_method(self, *args, **kwargs)
else:
self.session['original_url'] = self.request.url
self.redirect('/my-login-page-where-users-can-choose-auth-method')
return check_login
,要回那_on_signin()重定向線,而不是self.redirect('/profile')
你會做這樣的事情:
target = self.session['original_url']
self.redirect(target)
一對夫婦的注意事項:
- 上面的例子假設您有一個
logged_in
方法,該方法指示當前請求是否由已驗證的用戶進行; - ,你可能會想從會話清除「original_url」(如果認證成功)
當您的用戶嘗試登錄時,您的應用首先請求訪問令牌,然後構建Google OAuth2 URL。您的應用將用戶重定向到您的用戶必須登錄的google.com。此登錄URL包含服務器對Google的請求中的訪問令牌。出於安全目的,它與該重定向URL綁定。
此重定向URL旨在通過向您的應用程序返回成功的登錄操作來完成登錄過程,以便您完成登錄用戶,註冊該用戶或執行任何應用程序需要執行的操作。
之後,球在你的球場上,你可以編程你的應用程序來做你想做的任何事情。換句話說,Google只關心將請求發送到您的安全端點。一旦完成,Google不再關心你的工作;這是你的應用程序。
因此,您的用戶重定向回頁面,他/她在登錄,這是一個真棒可用性改進之前,是要做到以下幾點:
步驟重定向用戶:
1在用戶登錄之前,將他/她所在的頁面存儲在會話中。
session = appengine_utilities.sessions.Session()
session["target_url"] = "/example_page.html" # sets keyname to current page
2下,繼續前進,記錄用戶的正常進行。
3之後谷歌將用戶重定向到您的驗證重定向URL,從session中獲取目標網址:
target_url = session['target_url']
4最後,用戶重定向到該網址。
總之,只要您首次接受來自Google的重定向到單個建立的重定向網址,您就可以實現將用戶重定向到任何目標網址的目標。
會話示例來自Beaker網站。此外,Nick Johnson's Webapps on Appengine Part 5博客文章潛入與燒杯會議。
- 1. Google GTMAppAuth重定向網址
- 2. 如何使用Google App Engine重定向所有網址
- 3. Google索引和網址重定向
- 4. Google App Domain重定向
- 5. 重複重定向網址
- 6. 網址重寫/重定向
- 7. Google App Engine重定向/重寫
- 8. 重定向舊網址到新網址
- 9. 如何停止使用Python在Google App Engine中轉到重定向的網址?
- 10. 網址重定向在.htaccess
- 11. 重定向301在網址
- 12. 重定向網址格式
- 13. 不良網址=重定向
- 14. 找到重定向網址
- 15. 條紋重定向網址
- 16. 網址重定向htaccess的
- 17. Joomla網址重定向
- 18. 重定向網址的.htaccess
- 19. 網址重定向在.htaccess
- 20. 重定向網址在.htaccess
- 21. 重定向PayPal IPN網址
- 22. 重定向網址是iframe
- 23. Nginx的重定向網址
- 24. 301重定向網址
- 25. Opencart的網址重定向
- 26. 遮罩重定向網址
- 27. PHP - 網址被重定向
- 28. Sitecore重定向網址
- 29. 刮掉重定向網址。
- 30. 網址PHP重定向
感謝Alex,我的確在使用webapp2,看到mort的例子後,我將它保存在webapp2會話中而不是另一個會話庫中。感謝這個偉大的例子! – Amyth