Google App Engine与带重定向和HTTP POST的Google身份验证

0 投票
1 回答
931 浏览
提问于 2025-04-15 15:27

我有一个表单,需要把内容发送到服务器。

我使用谷歌认证,因为只有经过授权的人才能发送数据到服务器。

这个表单大概是这样的:

<form action="/blog/submit" method="post">
...
</form>

认证只在提交的时候需要,而不是在进入表单页面的时候。所以在提交的控制器里,我用了类似这样的代码:

class SubmitPage(webapp.RequestHandler):
    def post(self):
        if users.get_current_user() is None:
            self.redirect(users.create_login_url(self.request.uri))
            ...

问题是,重定向的返回网址只执行了HTTP GET请求,而我想要的是HTTP POST请求。

我想先进行认证,然后再重定向到提交页面(POST),但它却试图在同一个网址上执行GET请求。

我想知道,是否有可能实现我想要的功能?

1 个回答

3

不,POST数据不能跟着HTTP重定向一起走。

在你展示这个表单之前,几乎可以肯定你应该先检查用户是否已经登录。不过,一旦用户到了这个表单,最好的办法可能是把内容保存到一个和你生成的会话ID相关的数据库里,然后要么把它设置为一个cookie,要么把它加到重定向的链接里,这样当用户从登录页面返回时,你就可以再次取出这些数据。

撰写回答