【问题标题】:What should be used as User id?应该使用什么作为用户 ID?
【发布时间】:2016-06-04 15:40:02
【问题描述】:

Flask-login 要求我提供以下回调:

@login_manager.user_loader
def load_user(user_id):
    return User.get(user_id)

但是应该用什么作为id呢?我可以只使用用户名吗?如果是,在 user_loader("admin").is_authenticated() 的情况下我应该返回什么?我如何知道他是否在上一个会话中通过了身份验证?我应该手动跟踪它吗?

【问题讨论】:

  • 第一个问题。该库不会“限制您使用用户名和密码、OpenID 或任何其他身份验证方法。”,对于您的第二个问题,它应该返回一个布尔值,具体取决于该 ID 是否经过身份验证。不太清楚你问这个还有什么意思。
  • 至于知道是否在之前的会话中进行了身份验证,是的,您需要存储它,因为会话在您关闭页面时结束。有一个remember me 设置

标签: python flask flask-login


【解决方案1】:

user_id来自User模型,在User模型下添加如下代码:

class User(db.Model):

    '''

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        return unicode(self.id)

另一种更简单的方法是从 UserMixin 继承:

from flask_login import UserMixin
class User(db.Model, UserMixin):

    ...

here查找参考文档

【讨论】:

    【解决方案2】:

    使用

    class User:
        def get_id(self):
            return id(self)
    

    应该保证两个User对象只有在它们是同一个Object时才返回相同的id。

    【讨论】:

    • 我应该什么时候使用 is_authenticated 呢?为什么不能只是return True
    猜你喜欢
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多