【发布时间】:2018-06-26 07:26:35
【问题描述】:
我是 Flask 编程的初学者,我有这段代码,我想将标头标记与装饰器函数中名为 key 的字符串进行比较。 代码如下:
def require_appkey(view_function):
@wraps(view_function)
def decorated_function(*args, **kwargs):
try:
if request.headers.get('auth') and request.headers.get('auth') == key:
return view_function(*args, **kwargs)
else:
return {'status' : 'success', 'message' : 'auth failed'}
except Exception as e:
x = str(e)
x.replace('\n', '')
return {'status' : 'failed', 'message' : str(x)}
return decorated_function
要在上面装饰器的键中分配一个值,这是我的示例代码。
class AuthenticateUser(Resource):
def post(self):
try:
global key
conn = None
parser = reqparse.RequestParser()
parser.add_argument('username', type=str)
parser.add_argument('password', type=str)
args = parser.parse_args()
_user = args['username']
_userPassword = args['password']
m = hashlib.md5(_userPassword.encode())
conn = psycopg2.connect(database='salestracking', user='postgres', password='postgres')
cursor = conn.cursor()
cursor.execute('SELECT count(*) FROM tbl_user WHERE username = %s AND password = %s', (_user,m.hexdigest(), ))
data = [dict(((cursor.description[i][0]), value)
for i, value in enumerate(row)) for row in cursor.fetchall()]
x = data[0]['count']
if(x == 1):
cursor = conn.cursor()
cursor.execute('SELECT userID, userlevel, employeeID, username FROM tbl_user WHERE username = %s AND password = %s;', (_user, m.hexdigest(), ))
data = [dict(((cursor.description[i][0]), value)
for i, value in enumerate(row)) for row in cursor.fetchall()]
create_access = create_access_token(args['username'])
data[0]['access_token'] = create_access
data[0]['status'] = 'success'
data[0]['message'] = 'success'
key = data[0]['access_token']
print(key)
cursor.close()
return data[0]
else:
cursor.close()
return {'status' : 'success', 'message' : 'failed'}
except Exception as e:
x = str(e)
x.replace('\n', '')
return {'status' : 'failed', 'message' : str(x)}
finally:
if conn is not None:
conn.close()
但是当我运行它时
class CreateUser(Resource):
@require_appkey
def post(self):
错误返回“未定义名称'key'”。请帮我解决它。
【问题讨论】:
标签: python-3.x api flask