当前位置: 首页 > 面试题库 >

在Flask中,设置一个Cookie,然后重定向用户

钱卓君
2023-03-14
问题内容

在Flask中,似乎可以通过直接修改响应对象来设置Cookie。

如何成功返回响应对象,又如何在成功登录后将用户重定向到其他页面?我想专门重定向用户,而不是渲染其他页面,以防用户点击REFRESH。

这是我当前的代码,它仅显示同一页面login.html:

@app.route('/login', methods=['POST', 'GET'])
def login():
  errors = []

  if request.method == 'POST':

    email = request.form['email']
    password = request.form['password']

    #Check the user's e-mail
    try:
      u = User(email)
    except UserError, e:
      errors.append(e)
    else:

      #Check the user's password
      if not u.authenticatePassword(password):
        errors.append(('password','Invalid password'))
        return render_template('login.html',error=errors)

    #Set the session
    s = Session()
    s.user_id = u.user_id
    s.ip = request.remote_addr

    #Try to set the cookie
    if s.setSession():
      response = make_response( render_template('login.html',error=errors))
      response.set_cookie('session_id', s.session_id)
      return response

  return render_template('login.html',error=errors)

问题答案:

你应该将代码更改为:

from flask import make_response
if s.setSession():
    response = make_response(redirect('/home'))
    response.set_cookie('session_id', s.session_id)
    return response


 类似资料:
  • 问题内容: 经过一些处理后,我想为用户输入设置一个cookie值,然后将其重定向到新页面。但是,cookie尚未设置。如果我注释掉重定向,则cookie设置成功。我认为这是某种形式的标题问题。在这种情况下最好的解决方法是什么? 请注意,无论哪种情况,setcookie都会返回,并且我不会收到任何错误/警告/通知。 编辑: 我正在使用Unix / Apache / MySQL / PHP 问题答案:

  • 问题内容: 我是Python和Flask的新手,我正在尝试做与中相同的操作-即:重定向到特定的URL-我该如何处理? 这是我的代码: 问题答案: 你必须返回重定向: 请参阅flask文档上的文档。代码的默认值为302,因此可以省略或用其他重定向代码(301、302、303、305和307中的一个)替换。

  • 问题内容: 我有一个名为Item的数据库表。项目具有一个属性,可以是以下任一属性 在我的网站上,我有两个显示Item表的视图。 视图1显示 所有 项目(带有状态列)。 视图2 仅 显示状态为的项目。 根据项目状态,用户可以执行某些操作(“要做的事”,“要做的事”,“要做的事”)。 如果您考虑视图1和视图2,它们的共同点是它们包含状态为的项目。所以在两者上我都有一个Button链接到一个名为 id-

  • 完整的请求链是: > : 或(似乎无关紧要): ,因为此时站点是相同的,并且浏览器显示cookie 对于用户上次加载的页面不在上的一般情况,我赞赏将呈现给的CSRF潜力,但我只是将其从设置,现在我是重定向到的人。 当然,我可以设置,但是如果有人可以找到某种方法通过错误地创建URL来触发他们从我的站点选择的重定向,那么就不会有点击劫持的可能吗?

  • 问题内容: 我尝试了这个,但不显示消息仅重定向 login.jsp Login_Servlet 是否可以显示这样的消息? 如果是这样,我做错了吗? 问题答案: 您可能会这样做: 编辑: 2018年3月20 日,美国东部时间08:19 或 不使用js

  • 我是Python和Flask的新手,我正在尝试做与如C#-ie:重定向到一个特定的URL-我该怎么做? 这是我的密码: