SQLiteデータベースからユーザー名とパスワードフィールドを読み込み、基本的なHTTP認証(n cheack_auth関数)のユーザー入力値と比較しようとしています。私はretriveUser関数を使用してユーザーを取得し、それをテンプレートで表示することはできますが、フラスコアプリケーション内でそれを使用して、ユーザーが実際に存在するかどうかを比較することはできません。500 SQLite3データベース値との比較時にエラーが発生しました
thisによると、返されたdbuser内の項目に配列としてアクセスできるはずですが、動作していないようです。私はPythonの初心者なので、おそらく何か基本的なものが欠けているかもしれませんが、それが何であるか分かりません。
q = """
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL,
password TEXT NOT NULL,
phone TEXT NOT NULL
);
"""
con = sql.connect("database.db")
cur = con.cursor()
cur.execute(q)
# original code from https://gist.github.com/PolBaladas/07bfcdefb5c1c57cdeb5
def insertUser(username, password, phone):
con = sql.connect("database.db")
cur = con.cursor()
cur.execute("INSERT INTO users (username,password,phone) VALUES (?,?,?)", (username,password,phone))
con.commit()
con.close()
def retrieveUsers():
con = sql.connect("database.db")
cur = con.cursor()
cur.execute("SELECT username, password, phone FROM users")
users = cur.fetchall()
con.close()
return users
def retrieveUser(username):
con = sql.connect("database.db")
cur = con.cursor()
cur.execute("SELECT username, password FROM users WHERE username = (?)", [username])
user = cur.fetchone()
con.close()
return user
def check_auth(username, password):
"""This function is called to check if a username/
password combination is valid.
"""
dbuser = retrieveUser(username)
return username == dbuser[0] and password == dbuser[1]
def authenticate():
"""Sends a 401 response that enables basic auth"""
return Response(
'Could not verify your access level for that URL.\n'
'You have to login with proper credentials', 401,
{'WWW-Authenticate': 'Basic realm="Login Required"'})
def requires_auth(f):
@wraps(f)
def decorated(*args, **kwargs):
auth = request.authorization
if not auth or not check_auth(auth.username, auth.password):
return authenticate()
return f(*args, **kwargs)
return decorated
あなたは、Pythonから取得している実際のエラーが何である:ここでは
は私のcheck_authメソッドの結果のコードですか? 500状態は診断するにはあまりにもあいまいです。 –
私はあなたにアリーを教えて欲しいです。これはクラスのためのもので、ドッカー、フラスコ、ガンコーンのスタックで走っています。私が限られたドッカー知識を得る方法を知っている最も多くのデバッグ情報は、ビルドプロセス中に発生するエラーのみを表示するドッカー作成ログからです。 – CNorlander
私は 'docker'についてはあまりよく分かりませんが、[こちら](https://docs.docker.com/engine/reference/commandline/logs/)を試してみてください。 –