2013-11-10 1 views
0

Я хотел бы знать, как войти в систему пользователя в колбе, сравнивая имена пользователей и пароли из базы данных. Если ошибка является имя пользователя оленья кожа существовать вспышка «Пользователь оленья кожа существовать» если пароль соответствуют оленья кожа с пользователей пароль вспышки «worng passsword» и на успех вспышки «Вы вошли в»Как войти в колбу?

Сейчас у меня есть этот код ,

if request.method == 'POST': 
    if request.form['username'] != app.config['USERNAME']: 
     error = 'Invalid username' 
    elif request.form['password'] != app.config['PASSWORD']: 
     error = 'Invalid password' 
    else: 
     session['logged_in'] = True 
     flash('You were logged in') 
     return redirect(url_for('show_entries')) 

Я хотел бы изменить имя пользователя и пароль чек дб rahter чем app.config

ответ

4

Используйте Flask-SQLAlchemy, а затем просто проверить вашу базу данных для соответствующего пользователя. Кроме того, используйте bcrypt для хэш-паролей. Хранение паролей в открытом тексте неприемлемо ни при каких обстоятельствах.

user = User.query.filter_by(username=request.form['USERNAME']).first() 
if not user: 
    error = 'Invalid username' 
elif bcrypt.hashpw(request.form['password'], user.password) != hashed: 
    error = 'Invalid password' 
else: 
    session['user_id'] = user.id # makes more sense than storing just a bool 
    flash('You were logged in') 
    return redirect(url_for('show_entries')) 

Возможно, сначала вам нужно будет определить свою пользовательскую таблицу. Вот пример:.

class User(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    username = db.Column(db.String, unique=True) 
    password = db.Column(db.String) 

Для того, чтобы фактический пользователь доступен, я хотел бы предложить вам использовать функцию before_request, которая проверяет session['user_id'] и сохраняет User.query.get(session['user_id']) в g.user, если пользователь вошел в систему