Я использую Flask-Login и пытаюсь понять, как это работает. Если я правильно понимаю документы, я должен создать пользовательский класс, который содержит четыре метода: is_authenticated, is_active, is_anonymous и get_id. Я не понимаю, что я должен делать после этого. Существует функция login_user (пользователь), которая, как я понимаю, возьмет мой экземпляр еще не прошедшего проверку подлинности пользователя и проверит его подлинность, но как это работает, когда у моего пользовательского класса нет установленных методов?Как использовать Flask-Login?
Вот код:
class User:
isAuth = False
isActive = False
isAnon = True
id = unicode(0)
def __init__(self, isAuth, isActive, isAnon, id):
self.isAuth = isAuth
self.isActive = isActive
self.isAnon = isAnon
self.id = id
def is_authenticated(self):
return isAuth
def is_active(self):
return isActive
def is_anonymous(self):
return isAnon
def get_id(self):
return id
А вот мое предположение о том, как я должен проверить подлинность пользователя, используя authomatic и колбовую Логин:
@app.route('/login/<provider_name>/', methods=['GET', 'POST'])
def login(provider_name):
response = make_response()
result = authomatic.login(WerkzeugAdapter(request, response), provider_name)
user = User()
if result:
if result.user:
result.user.update()
login_user(user)
return render_template('login.html', result=result)
return response
Что я упускаю?
EDIT, вот user_loader:
@lm.user_loader
def load_user(userid):
return User.get(userid)
И у меня есть это на вершине:
lm = LoginManager()
lm.init_app(app)
Попробуйте добавить '@ login_required' декоратор над вашими методами, которые обрабатывают ответы (такие как' индекс() 'или аналогичный). –
Это сделано, но не видно в приведенном выше примере кода. – theva
Посмотрите, поможет ли это: http://stackoverflow.com/questions/12075535/flask-login-cant-understand-how-it-works?rq=1 –