【问题标题】:redis database for flask application用于烧瓶应用程序的 redis 数据库
【发布时间】:2017-03-21 07:58:09
【问题描述】:

我正在尝试修改现有的烧瓶应用程序以使用 redis 数据库而不是令牌。我搜索了一个示例并通过 redis 文档,但找不到任何东西。这是我所拥有的:

from flask import Flask, Response
from flask.ext.login import LoginManager, UserMixin, login_required

from redis import Redis
redis = Redis()

app = Flask(__name__)
login_manager = LoginManager()
login_manager.init_app(app)


class User(UserMixin):
    # proxy for a database of users
    user_database = {"JohnDoe": ("JohnDoe", "John"),
               "JaneDoe": ("JaneDoe", "Jane")}

    def __init__(self, username, password):
        self.id = username
        self.password = password

    @classmethod
    def get(cls,id):
        return cls.user_database.get(id)


@login_manager.request_loader
def load_user(request):
    token = request.headers.get('Authorization')
    if token is None:
        token = request.args.get('token')

    if token is not None:
        username,password = token.split(":") # naive token
        user_entry = User.get(username)
        if (user_entry is not None):
            user = User(user_entry[0],user_entry[1])
            if (user.password == password):
                return user
    return None


@app.route("/",methods=["GET"])
def index():
    return Response(response="Hello World!",status=200)


@app.route("/protected/",methods=["GET"])
@login_required
def protected():
    return Response(response="Hello Protected World!", status=200)


if __name__ == '__main__':
    app.config["SECRET_KEY"] = "ITSASECRET"
    app.run(port=5000,debug=True)

谁能指出我使用 redis 作为简单授权数据库的正确方向?

【问题讨论】:

    标签: python flask redis


    【解决方案1】:

    这不是一个具体的建议,但Flask-Cache 有很好的文档。它提供了多种将 Redis(或其他缓存)集成到烧瓶应用程序中的方法。我不确定这是否对您的目的有所帮助,但无论如何,它会消除一些样板。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 2018-10-02
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      相关资源
      最近更新 更多