gpt4 book ai didi

google-app-engine - 谷歌应用引擎 : SimpleAuth : Redirect Url On the Fly

转载 作者:太空宇宙 更新时间:2023-11-03 15:27:50 24 4
gpt4 key购买 nike

我在我的 GAE 应用程序中使用 Alex (https://github.com/crhym3/simpleauth) 的 SimpleAuth。我的基本模板中有一个 Jquery 支持的登录框,这意味着用户可以从应用程序内的任何 url 登录。我希望将用户重定向回他们请求登录的页面。有什么方法可以通过 Oauth2 实现这一点,或者我们可以将用户重定向回特定的 url 吗??

最佳答案

如果您使用的是 SimpleAuth,我假设您可能使用的是 webapp2,所以 @jmort253 示例并不完全符合我的要求(例如 webapp2 具有内置 session ,那么为什么还要使用另一个库来处理 session )。

不过,从概念上讲它是正确的:您需要在开始身份验证过程之前将原始 URL 存储在 session 中的某个位置。然后在成功验证后使用该存储的 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 方法来指示当前请求是否是由一个已经通过身份验证的用户发出的;
  • 您可能希望从 session 中清除“original_url”(如果他们成功通过身份验证)

以上示例的版权归属于 webapp2_extras.appengine.users module .

关于google-app-engine - 谷歌应用引擎 : SimpleAuth : Redirect Url On the Fly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10858834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com