0

我已经为 Google 登录实现了 flask-dance 和 authlib Flask 客户端,在所有实现中都不清楚一个答案是如何在用户登录后将用户重定向到原始用户。例如,我想要的流程 => 单击 /results 检查是否未登录重定向到登录使他们登录,然后再次重定向回登录会话的结果。

我看到了一些使用 state 和 kwargs 添加的答案,但没有看到任何明确的答案或伪代码实现。

如果您已经实现了这样的场景,请回答问题,这将有很大帮助,或者您也可以参考您的 Github 项目(如果已实施)

4

1 回答 1

0

我发现自己的问题的简单解决方案是在任何此类库的任何实现中使用会话变量来记录原始 url,然后在登录后使用该变量重定向用户,所以在这里我使用了下一个参数变量,它存储它,然后一旦授权将用户发送到他们要求的原始网址

看下面的代码

@app.route('/login')
def login():
    google = oauth.create_client('google')  
    redirect_uri = url_for('authorize', _external=True)
    return google.authorize_redirect(redirect_uri)


@app.route("/dashboard")
def protect():
    if not session.get('profile'):
        session['next']='/dashboard'
        return redirect('/login')

    if session['profile']:
        #load dashboard

    else:
        return "forbidden"        


@app.route('/authorize')
def authorize():
    google = oauth.create_client('google')  
    token = google.authorize_access_token() 
    resp = google.get('userinfo')  
    user_info = resp.json()
    user = oauth.google.userinfo()
    session['profile'] = user_info
    session.permanent = True
    redirecti=session.get("next",None)
    return redirect(redirecti)   
于 2021-11-06T08:21:13.940 回答