python - Flask:如何在 session 中存储凭据并检索它们?

标签 python rest authentication flask flask-sqlalchemy

我正在做一个项目,我的每个 REST端点需要进行身份验证。一个例子是

@login_required
def get_transactions(self):
  pass

我有一个 User看起来像的模型
class User(UserMixin, db.Model):
    __tablename__ = 'users'
    # noinspection PyShadowingBuiltins
    uuid = Column('uuid', GUID(), default=uuid.uuid4, primary_key=True,
                  unique=True)
    email = Column('email', String, nullable=False, unique=True)
    _password = Column('password', String, nullable=False)
    created_on = Column('created_on', sa.types.DateTime(timezone=True),
                        default=datetime.utcnow(), nullable=False)
    last_login = Column('last_login', sa.types.DateTime(timezone=True),
                        onupdate=datetime.utcnow())

    def __init__(self, email, password):
        self.email = email
        self._password = hash_password(password) # hash_password does md5 of password
  • 用户登录后,我想在客户端 session 中存储一个安全 token ,并希望每个进一步的请求都拥有该 token
  • 我查找了示例,但不明白如何在客户端 session PLUS
  • 中保存这样的安全 token
  • 如何确保进一步的请求从客户端 session 向我发送该 token 。

  • 我不知道它是如何工作的,请帮助

    最佳答案

    你见过这个例子吗? http://flask.pocoo.org/docs/patterns/viewdecorators/?highlight=login_required

    如果您不想自己重写这些东西,也可以使用这些模块:

  • http://pythonhosted.org/Flask-Login/
  • http://pythonhosted.org/Flask-Auth/

  • 无论如何,至于在 session 中存储数据,这应该是相当容易的。简单地把它放在flask.session中:
    import flask
    # You want to automatically generate the token and store it somewhere on the server (database for example)
    flask.session['some_token'] = some_token
    

    您的 token 可能是这样的:
    class Session(db.Model):
        token = Column('token') # auto generated thingy
        # foreign key to user for example
        # expiration time/date
    

    关于python - Flask:如何在 session 中存储凭据并检索它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15993408/

    相关文章:

    RaspberryPi自动连接wifi的python脚本

    rest - 简单的 REST 身份验证

    security - 如何在 Tomcat 5.5 中实现加盐密码

    java - spring boot API 调用出现 403 禁止错误?

    java - 在过滤器中设置授权 header

    使用 SharpSVN 的 SVN 存储库身份验证

    session - Laravel 多域 session

    python - 如何修复 pip 安装程序安装的软件包的 "__path__ attribute not found"错误?

    javascript - Django-CKEditor 小部件未动态加载

    python - 文件未找到错误: [Errno 2] No such file or directory: get file from a folder macbook