【发布时间】: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 作为简单授权数据库的正确方向?
【问题讨论】: