Python 对本地主机的Unity POST请求
我已经检查了这个网站上的所有答案。但我没有找到有效的解决方案。我正在尝试将用户从unity应用程序登录到我正在本地主机上开发的站点。我不会传递布尔值“记住”,因为它给了我问题 我的统一代码是:Python 对本地主机的Unity POST请求,python,c#,http,unity3d,post,Python,C#,Http,Unity3d,Post,我已经检查了这个网站上的所有答案。但我没有找到有效的解决方案。我正在尝试将用户从unity应用程序登录到我正在本地主机上开发的站点。我不会传递布尔值“记住”,因为它给了我问题 我的统一代码是: IEnumerator Login(string username, string password, bool remember) { List<IMultipartFormSection> formData = new List<IMultipartF
IEnumerator Login(string username, string password, bool remember)
{
List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
formData.Add(new MultipartFormDataSection("username=" + username + "&password=" + password));
using (UnityWebRequest www = UnityWebRequest.Post("http://127.0.0.1:5000/api/children/mobile_login/", formData))
{
yield return www.SendWebRequest();
var response = www.downloadHandler.text;
Debug.Log(response);
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Login complete!");
}
}
}
代码返回“{”错误“:“无法登录”}”和HTTP/1.1 401未经授权
我知道用户名和密码是正确的。我知道登录功能可以工作,因为我的同事可以从他正在使用的react应用程序登录
我尝试以https方式运行我的本地主机,但没有成功,所以我将其改回http
有什么建议吗?您是否尝试过使用
WWWForm
之类的var form=new WWWForm();表单.AddField(“用户名”,用户名);表单.AddField(“密码”,password)代码>?您是否也确定收到的邮件正确?也许编码是一个问题?仅通过服务器端跟踪,您的登录条件之一必须为false,要么用户为无,要么计算为false
,要么检查密码\u散列
无法验证密码的散列。在服务器端使用调试工具可能会显示密码传递的内容,查看是否有额外的字符被添加或附加,或者编码是否不同,这可能是有益的。使用诸如wireshark或fiddler之类的嗅探器,在python和C#之间的第一个响应中比较头。还要检查TLS版本。python代码没有显示IP地址,因此请查看python是否使用环回127.0.0.1或其他内容。HTTPS使用TLS作为身份验证,TLS的版本可能不同。检查嗅探器,查看python和c#是否使用相同版本的TLS。
@children.route('/mobile_login', methods=['POST'])
def mobile_login():
username = request.form.get('username')
password = request.form.get('password')
remember = request.form.get('remember')
user = User.objects(username=username).first()
if user and crypt.check_password_hash(user.password, password):
login_user(user)
user.save()
token = user.get_auth_token()
res = make_response(jsonify({"user": user}), 200)
if remember:
res.set_cookie('child-auth', value=token, path='/')
return res
else:
return jsonify({"error": "unable to login"}), 401