400:在flask登录上使用hashlib时请求错误

2024-06-01 10:30:53 发布

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

我正在设置一些基本的数据库哈希,但在设置之后,我收到了400个错误的请求。在

这是我第一次使用哈希,我需要一些建议。我不打算在大麻上撒盐。 有没有什么东西我在HTML方面遗漏了?在

#!/usr/bin/env python
from flask import Flask, render_template, Markup, request, redirect, session, flash, url_for, flash, g
from flask_login import LoginManager,login_manager, current_user, login_required, login_user, logout_user, UserMixin, confirm_login, fresh_login_required
from flask_wtf import FlaskForm
from functools import wraps
from wtforms.validators import DataRequired
from wtforms import StringField
from socket import *            #required for sock address issue.
import mraa
from OpenSSL import SSL
import sys
import form
import time
import sqlite3
import hashlib
import logging

app = Flask(__name__)     #removing breaks everything.
@app.errorhandler(404)                         #  handles important errors    
                                               #   ^
def errorpage(e):                              #   ^      
    return render_template('404.html')         #   ^          \[T]/
@app.errorhandler(500)                         #   ^           |@| 
def errorpage500(e):                           #   ^           / \
    flash('error 500')                         #   ^     Praise the ASCII
                                               #       
def login_required(f):                         # makes login required modifier work                     
    @wraps(f)                                  #     @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    def wrap(*args, **kwargs):                 #     @the only reason people keep using@
        if 'logged_in' in session:             #     @vi is they cant figure out how to@ 
            return f(*args, **kwargs)          #     @exit it.                         @
        else:                                  #     @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                          
            flash('please login first.')       ##                         
            return redirect (url_for('index')) ################################                                  
    return wrap                                                          




def getHash(passText):
    hashPass=hashlib.sha512()
    hashPass.update(passtext)
    return(hashPass.hexdigest())


@app.route('/', methods=['GET','POST'])
def index():
    db = sqlite3.connect('sql.sql3')
    db.row_factory = sqlite3.Row
    epass=getHash(request.form['postPass'])
    query="select username, password from users where username=? and password=?"
    t=(request.form['postUser'], epass)
    cursor=db.cursor()
    cursor.execute(query,t)
    rows = cursor.fetchall()
    if len(rows) ==1:
        bodyText=request.form['postUser'] + " " + request.form["postPass"]
        bodyText=bodyText + "Success!"
        session['authenticated']='yes'
    else:
        bodyText = "incorrect login."   
    return render_template('/index.html')



if __name__ == '__main__':
    app.debug = True
    app.run(host='0.0.0.0', port=443, ssl_context='adhoc')

这是回溯的副本,但我不知道这意味着什么。在

^{pr2}$

Here's the requested debug log


Tags: fromimportformappflaskreturnrequestdef
1条回答
网友
1楼 · 发布于 2024-06-01 10:30:53

request.form['postPass']

这不是在GET request only POST上填充的,因此这将是一个问题。在

如果您希望在这个视图中同时使用GET和POST,我建议您这样做:

@app.route('/', methods=['GET','POST'])
def index():
    if request.method == 'POST':
        #process the posted data
        return something

    if request.method == 'GET':
        #do something else
        return something_else

你的回溯也告诉你这是一个问题:

^{2}$

在第69行,您试图记录一个request对象,该对象只存在于来自用户的请求的上下文中。从注释这一行开始

相关问题 更多 >