使用flask-login进行间歇性登录问题

时间:2014-01-13 11:28:43

标签: python cookies flask flask-login

这是我的代码,我尝试通过Flask-login api登录用户。 user填充user / pwd并通过flask-api登录。我收到用户已登录的自定义消息,这意味着我有g.user i not none和g.user.is-autheticated = true。我还可以看到会话cookie的响应头。

@lm.user_loader
def load_user(user_id):
    app.logger.info(str(User.query.get(int(user_id))))
    return User.query.get(int(user_id))

@app.before_request
def before_request():
    g.user = current_user

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)
    password = db.Column(db.String(64))

    def __init__(self, username="", email="", password=""):
        self.username = username
        self.email = email
        self.password = password

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def get_id(self):
       return self.id

    def __unicode__(self):
       return self.username


@app.route('/weblogin',methods=['GET', 'POST'])
def weblogin():
   app.logger.info(str(g.user))
   app.logger.info(str(g.user.is_authenticated()))


   if request.method == 'POST':
    usr = request.form['login']
    pwd = request.form['password']
    session['remember_me'] = request.form['remember_me']
    user=db.session.query(User).filter_by(username=usr).first()
    if user.password == pwd:
      remember_me = False
      if 'remember_me' in session:
        remember_me = session['remember_me']
        session.pop('remember_me', None)
      login_user(user, remember = remember_me)
      g.user=user
      app.logger.info(str(g.user))
      app.logger.info(str(g.user.is_authenticated()))
      app.logger.info(str(g.user.username))
      return str(current_user.is_authenticated())
      return "logging user in"
    else:
      return "wrong username password combination"
   elif g.user is not None and g.user.is_authenticated():
     return "you are already logger in"
   else:
     return render_template("login.html")

现在奇怪的是,如果我试图关闭窗口并打开一个新窗口。然后进入登录页面,应用程序无法在某个时间对我进行身份验证。虽然我看到相同的cookie被发送到服务器。应用程序“有时”无法加载用户。然后我被重定向到登录页面,要求填写凭据。

在对应用程序进行了一些摆弄之后,我观察到如果我尝试刷新页面几次应用程序就能够对我进行身份验证。我看到我的消息,我已经再次登录。虽然我没有做任何不同的事情。

如果有人能指出我在这里做错了什么,真的很感激。

感谢

0 个答案:

没有答案