2012-11-13 2 views
2

로그인 방법에서 데이터베이스의 비밀번호가 사용자가 제출 한 비밀번호와 일치하는지 확인하려고합니다. 이 인쇄 명령을 보여줘 무엇을, 암호가 기본값입니다 예를 들어Sqlite는 데이터베이스에서 문자열을 조작합니다

@app.route('/login', methods=['GET', 'POST']) 
def login(): 
error = None 
db = get_db() 
if request.method == 'POST': 
    cur = db.execute('select password from users where username = ?', (request.form['username'],)) 
    password = cur.fetchone() 
    print password 
    print request.form['password'] 
    if request.form['password'] != password: 
     error = 'Invalid username/password combination' 
    else: 
     session['logged_in'] = True 
     flash('You were logged in') 
     return redirect(url_for('show_entries')) 
return render_template('login.html', error=error) 

: 나는이 코드를 사용

print password : (u'default',) 
print request.form['password'] : default 

그래서 그들은 참으로 동일하지 않다. 아무도 이것을 고치는 법을 압니까?

답변

4

데이터베이스에서 반환하는 각 행은 열 튜플입니다. 한 행 (.fetchone())을 가져 왔으며 그 행은 하나의 요소가있는 튜플입니다 (password 열만 선택). 튜플에서 인덱스를 사용하여 개로 가져 가야합니다.

password = cur.fetchone()[0] 
관련 문제