将哈希密码插入sqlite3表

2024-06-27 20:57:06 发布

您现在位置:Python中文网/ 问答频道 /正文

[error message on terminaldb_table

嗨,我正在尝试使用插入哈希密码

werkzeug.security.generate_password_hash(password,method='pbkdf2:sha256',salt_length=8)

但是我得到了内部服务器错误,因为我在错误屏幕截图的第一张图片上突出显示了这一行

我正在使用CS50IDE、python、sqlite3、werkerzeug安全库

短暂性脑缺血发作

以下是我的路线代码:

@app.route("/register", methods=["GET", "POST"])
def register():
    """Register user"""

    # Forget any user_id
    session.clear()

    # User reached route via POST (as by submitting a form via POST)
    if request.method == "POST":

        # Ensure username was submitted
        if not request.form.get("username"):
            return apology("must provide username", 403)

        # Ensure password was submitted
        elif not request.form.get("password"):
            return apology("must provide password", 403)

        # Ensure password was submitted
        elif not request.form.get("password2"):
            return apology("must re-type password", 403)

        # Check the password match
        if request.form.get("password") != request.form.get("password2"):
            return apology("your password didn't match")

        # Query database for existing usernames
        rows = db.execute("SELECT * FROM users WHERE username = :username", username=request.form.get("username"))

        # Ensure username not exists
        if len(rows) == 1:
            return apology("username exists, please select another")

        # Otherwise insert the user to the users TABLE
        else:
            hashed_pass = generate_password_hash((request.form.get("password")), method='pbkdf2:sha256', salt_length=len(request.form.get("password")))
            db.execute("INSERT INTO users (username, hash) VALUES (:username, ?)",
                        username=request.form.get("username"), hash=hashed_pass)

        # Return apology if cannot register
        # Query database for username to check
        rows = db.execute("SELECT * FROM users WHERE username = :username", username=request.form.get("username"))

        if len(rows) != 1:
            return apology("Sorry something went wrong, please try again")

        # If register succesful
        else:
            return redirect("/login")

    # User reached route via GET (as by clicking a link or via redirect)
    else:
        return render_template("register.html")

Tags: formregistergetreturnifrequestusernamenot
1条回答
网友
1楼 · 发布于 2024-06-27 20:57:06

插入到用户中的内容应该如下所示

sql = "INSERT INTO users (username, hash) VALUES (?, ?)"
values = (request.form.get("username"), hashed_pass)
db.execute.execute(sql, values)

db.execute.execute("INSERT INTO users (username, hash) VALUES (?, ?)", (request.form.get("username"), hashed_pass))

相关问题 更多 >