我想添加一个简单的登录功能,可以登录或不登录(不需要存储用户特定的数据)。
我做了一个User类:
class User(object):
def __init__(self, username, hash):
self.name = username
self.hash = hash
我从INI文件中加载了一个用户列表。
我实现了user_loader函数
@self.login_manager.user_loader
def load_user(userid):
for user in self.users:
if user.name == userid
return user
return None
登录方法有什么用?
@self.server.route("api/login", methods=["GET", "POST"])
def login():
我想使用ajax请求进行登录,其中我发送凭据并获取包含用户名或错误消息的JSON响应。
答案 0 :(得分:2)
简单示例,适用于POST /api/login
username=TEST_USER&hash=TEST_HASH
数据或GET /api/login?username=TEST_USER&hash=TEST_HASH
:
class User(UserMixin):
def __init__(self, username, hash):
self.name = username
self.hash = hash
@property
def id(self):
return self.name
@self.server.route('/api/login', methods=['GET', 'POST'])
def login():
user = load_user(request.values.get('username'))
if user and user.hash == request.values.get('hash'):
login_user(user)
return jsonify(status='ok', username=user.username)
else:
return jsonify(status='error', message='wrong username or hash')
但是我更喜欢POST http方法登录。
实际上,您自己的实现将取决于您的js调用,例如,您可以使用request.get_json
代替POST request.form
或GET request.args
。和登录算法(凭证字段)。
同样load_user
可能会因大量users
而变慢。