Python 通过$http向Flask后端发送用户凭据
我正为一个小问题绞尽脑汁。我正在创建一个带有用户身份验证的小项目。这是我的登录代码:Python 通过$http向Flask后端发送用户凭据,python,angularjs,http,post,Python,Angularjs,Http,Post,我正为一个小问题绞尽脑汁。我正在创建一个带有用户身份验证的小项目。这是我的登录代码: @app.route('/api/login', methods=['GET', 'POST']) def login(): json_data = request.json user = User.query.filter_by(login=json_data['login']).first() print(request) print(user.password) i
@app.route('/api/login', methods=['GET', 'POST'])
def login():
json_data = request.json
user = User.query.filter_by(login=json_data['login']).first()
print(request)
print(user.password)
if user and bcrypt.check_password_hash(user.password, json_data['password']):
user.authenticated = True
db.session.add(user)
db.session.commit()
login_user(user, remember=True)
status = True
session['logged_in'] = True
else:
status = False
return jsonify({'result': status})
在前端(angularJS 1.5),我创建了用于处理用户登录的简单表单int html、控制器和服务。
问题是,当我发送用户数据时,服务器返回“false”响应,即使登录名和密码正确
这是我的服务:
attemptAuth(login, password) {
console.log(login, password);
return this._$http({
url: `${this._AppConstants.api}/login`,
method: 'POST',
headers: {'Content-Type': 'application/json;charset=utf-8'},
data: {login: login, password: password}
}).then(
// On success...
(res) => {
console.log(res);
return res;
}
);
}
这是我的控制器:
submitForm () {
console.log(this.formData);
this._User.attemptAuth(this.formData.login, this.formData.password).then(
(res) => {
this.isSubmitting = false;
console.log(res);
},
(err) => {
this.isSubmitting = false;
console.log(err.data.errors);
}
)
}
当我试图发送数据时。后端返回“POST/api/login HTTP/1.1”200发送请求正常。但为什么前端的凭据不能与后端一起使用?
奇怪的是,如果我尝试使用相同的凭据通过python控制台发送请求
导入请求
导入json
d={'login':'user123','password':'user321'}
res=requests.post('http://127.0.0.1:5000/api/login,data=json.dumps(d),headers={'Content-Type':'application/json'})
我获得状态200并从服务器返回true
我是否需要在服务中的$http方法中使用一些参数
cheers如果服务器返回false,则表示您发送了错误的数据(不正确或为空),因此请尝试在服务器端返回登录名和密码,以查看它们是否到达服务器。这就是为什么我使用这些“打印”方法来查看我的数据发生了什么。我的数据应该是这样的,比如说我已经向数据库添加了一个用户-login:user123,password:user321(密码使用bcrypt加密),当我尝试发送我的数据时,提到的打印方法正在从我的前端返回数据:login:user123,密码:user321但返回错误服务器上的
json\u数据是什么?是否正在打印amythinng?如果我尝试发送“login:user123,password:user321”,json\u数据将是“login:user123,password:user321”。问题是否可能在哈希函数bcrypt.check\u password\u哈希(user.password,json\u data)中['password']):