AppEngine - 尝试在OpenID登录后重定向到新页面

时间:2011-06-12 19:56:45

标签: python google-app-engine openid

我正在使用Google App Engine(Python),并使用OpenID进行登录。具体来说,我正在玩“metachris”中的GitHub项目:https://github.com/metachris/appengine-boilerplate

我相信相关的代码部分(App Handler for Login)就在这里:

class LogIn(webapp.RequestHandler):
    def get(self):
        user = users.get_current_user()
        action = decode(self.request.get('action'))
        target_url = decode(self.request.get('continue'))
        if action and action == "verify":
            f = decode(self.request.get('openid_identifier'))
            url = users.create_login_url(target_url, federated_identity=f)
            self.redirect(url)
        else:
            self.response.out.write(template.render(tdir + "login.html", \
                {"continue_to": target_url}))

login.html代码包括:

    <!-- Simple OpenID Selector --> 
    <form action="/login" method="get" id="openid_form"> 
        <input type="hidden" name="action" value="verify" /> 
        {% if continue_to %}<input type="hidden" name="continue" value="{{ continue_to }}" />{% endif %}        
        <fieldset> 
            <legend>Sign-in or Create New Account</legend> 
            <div id="openid_choice"> 
                <p>Please click your account provider:</p> 
                <div id="openid_btns"></div> 
            </div> 
            <div id="openid_input_area"> 
                <input id="openid_identifier" name="openid_identifier" type="text" value="http://" /> 
                <input id="openid_submit" type="submit" value="Sign-In"/> 
            </div> 
        </fieldset> 
    </form> 
    <!-- /Simple OpenID Selector --> 

现在,登录应用程序后,人们会回到根页面。我想带他们到登录用户的新主页。我试过改变一堆参数,但我没有让它起作用。

有人能指出我哪里出错吗?

1 个答案:

答案 0 :(得分:3)

您没有说,您是否在登录网址上设置了'continue'查询参数?如果没有,请尝试/login?continue=/logged-in

首次从查询参数设置target_url,然后使用continue_to将其输入到您的表单中。它在表单中的结果是,当您提交表单时,查询参数将保持不变。下一次,因为verify现已设置,target_url将被投放到create_login_url()。假设openid代码做了正确的事情,你的openid提供者应该将用户重定向回/logged-in