【发布时间】:2022-11-10 08:50:11
【问题描述】:
我编写了一个函数来使用 uid(uuid) 获取用户详细信息,但是如何为此添加 @token_required 功能?
正如我在大多数资源中看到的那样,人们使用普通的 sqlalchmey 完成了它,但我已经实现了这个使用 SqlAlchemy 核心.
我是新手,因为我无法解决这个问题,所以没有取得进展。请帮忙!!
登录代码
@app.route('/login', methods=['POST'])
def login():
auth = user_schema.load(request.get_json())
user_name = auth['user_name']
password = auth['password']
conn = engine.connect()
results = conn.execute(text("SELECT id, user_name, password, email_address, dob, uid FROM user WHERE (user_name = :user_name)"), {
"user_name": user_name})
# print(results)
result_dict = [dict(u) for u in results.fetchall()]
print(result_dict[0])
data = result_dict[0]
print("data :", data)
# return result_dict[0]
if data['user_name'] != auth['user_name']:
return make_response('Could not verify user, Please signup!', 401, {'WWW-Authenticate': 'Basic-realm= "No user found!"'})
if check_password_hash(data['password'], auth['password']):
token = jwt.encode({'uid': data['uid']},
app.config['SECRET_KEY'], 'HS256')
return make_response(jsonify({'token': token}), 201)
return make_response('Could not verify password!', 403, {'WWW-Authenticate': 'Basic-realm= "Wrong Password!"'})
user_detail 路由
@app.route('/users/<uid>', methods=['GET'])
def profile_view(uid):
print("user_details")
conn = engine.connect()
str_sql = text("""SELECT * FROM user WHERE uid = uid""", {"uid": uid})
results = conn.execute(str_sql).fetchall()
print(results)
return users_scehma.dump(results)
【问题讨论】:
标签: flask sqlalchemy flask-sqlalchemy pyjwt