javascript - 验证用户登录

标签 javascript python mysql authentication

按下登录按钮后,它会将整个 error.html 文件打印到 Web 控制台,而不是重定向到 userhome.html,这是哪里出错了,干杯!所有的代码都在下面......

python :

@app.route('/ValidateLogin',methods=['POST'])
def ValidateLogin():
    try:
        _username = request.form['username']
        _password = request.form['password']

        #connection to MySQL
        cur = mysql.connection.cursor()
        cur.callproc('sp_validateLogin', (_username,))
        data = cur.fetchall()

        if len(data) > 0:
            if check_password_hash(str(data[0][3]), _password):
                session['user'] = data[0][0]
                return redirect('/UserHome')
            else:
                return render_template('error.html', error = 'Wrong Email Address or Password')
        else:
            return render_template('error.html', error = "Invalid Email Address or Password")

    except Exception as e:
        return render_template('error.html', error = str(e))
    finally:
        cur.close()

JS:

$(function() {
    $('#btnSignIn').click(function() {
        $.ajax({
            url: '/ValidateLogin',
            data: $('form').serialize(),
            type: 'POST',
            success: function(response) {
                console.log(response);
            },
            error: function(error) {
                console.log(error);
            }
        });
    });
});

最佳答案

当输入正确的用户凭据时,它正在重定向/UserHome

您可以通过查看如下所示的请求日志来确认:

127.0.0.1 - - [28/Apr/2016 22:27:59] "POST /ValidateLogin HTTP/1.1" 302 -
127.0.0.1 - - [28/Apr/2016 22:27:59] "GET /UserHome HTTP/1.1" 200 -

您可以看到 $.ajax() 生成的对 /ValidateLogin 的 POST 请求被响应为 302 重定向到 /UserHome 随后是 $.ajax()。这是自动发生的,因此您的 javascript 没有机会对重定向进行操作。

引用this answer ,一种解决方案是让您的服务器发送一个 JSON 响应,其中包含一个“位置”URL,以便在登录成功时重定向到。然后让您的 success() 处理程序使用 window.location.replace(location) 重定向浏览器。

如果登录不成功,则从 error.html 模板呈现的 HTML 可能会在不同的 JSON 项中返回,该 success() 处理程序(因为您现在应该总是得到 200 响应)用于设置文档内容。检查引用答案中的一些代码,这些代码显示了如何在客户端处理它。

关于javascript - 验证用户登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36913656/

相关文章:

javascript - resizeTo() 在 Firefox 中不起作用

javascript - 无法从 xml 文件获取数据

javascript - 将动画添加到 jQuery toggleClass() 的问题

javascript - Sendgrid v3 api 返回错误请求

python ssh脚本错误

python - 在使用 ImageGrab 检索到的较大图像中检测较小的图像 (.png)?

python - 高效地生成 16 个字符的字母数字字符串

java - 如何为 mysql 5.5.44 创建触发器?

php - 使用php在mysql中插入符号

php - 如何按 AM/PM 升序对存储为 varchar 数据类型的日期时间进行排序?