Я пытаюсь понять, как работает Flask-Login
.
В своей документации я вижу, что они используют предварительно заполненный список пользователей. Я хочу играть с списком пользователей, хранящимся в базе данных.
Однако я не понимаю некоторых вещей в этом Flask-Login
модуле.
@login_manager.user_loader
def load_user(userid):
#print 'this is executed',userid
return user(userid, 'asdf')
Этот код будет вызываться по каждому запросу? Это используется для загрузки всех деталей моего пользовательского объекта?
На данный момент у меня есть этот код:
@app.route('/make-login')
def make_login():
username = 'asdf'
password = 'asdf'
user_data = authenticate(username, password)
user_obj = user(user_data[0], user_data[1])
login_user(user_obj)
return render_template('make-login.html')
Когда я обращаюсь к /make -login, я хочу войти.
Мой класс пользователя:
class user(object):
def __init__(self, id, username, active=True):
self.username = username
self.id = id
#self.active = active
def is_authenticated(self):
return True
def is_active(self):
return True
def is_anonymous(self):
return False
def get_id(self):
return 5
Кроме того, я написал еще две функции для аутентификации/регистрации
def authenticate(username, password):
cursor = db.cursor()
password = md5.md5(password).hexdigest()
try:
query = "SELECT * FROM `users` WHERE `username` = %s AND `password` = %s"
cursor.execute(query, (username, password))
results = cursor.fetchall()
#print results[0][0]
#print "here i am"
if not results:
return False
else:
user_data = [results[0][0], results[0][1]]
return user_data
#self.authenticated = True
#self.user_id = results[0][0]
#session['username'] = results['username']
#print type(results)
except db.Error, e:
return 'There was a mysql error'
def register(username, password, email, *args):
cursor = db.cursor()
password = md5.md5(password).hexdigest()
try:
#query = "INSERT INTO `users` (`username`, `password`, `email`) VALUES ('%s', '%s', '%s')" % (username, password, email)
query = "INSERT INTO `users` (`username`, `password`, `email`) VALUES (%s, %s, %s)"
cursor.execute(query, (username, password, email))
db.commit()
return True
except db.Error, e:
print 'An error has been passed. %s' %e
db.rollback()
return False
Я не знаю, как сделать эту Flask-Login
работу с MySQL. Кроме того, я не знаю, вошел ли пользователь в систему. Как я могу получить идентификатор пользователя или имя пользователя?
Кто-нибудь может объяснить мне в некоторых строках, как работает Flask-Login
?