gpt4 book ai didi

c# - 来自 Unity WWW 的 Laravel 5 登录 401 请求未经授权的 JWT(在浏览器和 Postman 中工作)

转载 作者:太空宇宙 更新时间:2023-11-03 14:56:56 25 4
gpt4 key购买 nike

更新:在底部

注意事项:

  • 智威汤逊认证
  • Nginx
  • 拉拉维尔 5
  • Unity(请求失败)
  • postman :工作。
  • Chrome:有效。

我做了很多搜索试图找到这个问题的答案但无济于事。

我正在尝试统一创建一个脚本,用于登录我的 Laravel 应用程序并返回授权 token ,以便我可以使用它来发出 API 请求。 token 已正确返回。

C#代码:

private IEnumerator SendLogin(string user, string pass, Action<bool, string> callback)
{
// Build login Submission form.
WWWForm formData = new WWWForm();
formData.AddField("email", user);
formData.AddField("password", pass);
formData.AddField("_token", "W4d7JugbWRg4ZASe4qAPinJVgg35OeaYStgeE7dm");

// Checking Username and password were read correctly (they are)
Debug.Log("Username: " + user + " Password: " + pass);

// Create Request
WWW www = new WWW(loginServerUrl, formData);
Debug.Log("Sending Login Info To Server.");

// Wait for request to finish
yield return www;

// just incase?
while (!www.isDone)
{
yield return new WaitForSecondsRealtime(0.15f);
Debug.Log("Waiting for download to finish.");
}

// Check for errors
if (www.error != null)
{
foreach (KeyValuePair<string, string> header in www.responseHeaders)
{
Debug.Log(header.Key.ToString() + " Value: " + header.Value.ToString());
}
Debug.Log("Error On Request. To string:" + www.error.ToString());
StopCoroutine(login_coroutine);
}

// Get Response
string response = www.text;
Debug.Log(response);

// Parse JSON
var json = JSON.Parse(www.text);
Debug.Log("Json: " + json.ToString());
Debug.Log("Response: " + response);


if (callback != null)
{
callback(true, response);
}
StopCoroutine(login_coroutine);
}

Chrome 屏幕截图: before after login pressed

postman 截图: postman

Unity 屏幕截图(包括控制台日志): console log(URL 不同,我在/login 上得到相同的结果)

编辑:我编辑了登录 Controller 以返回输入的电子邮件和密码作为响应,我得到了一些有趣的结果。
我还检查了访问日志,发现有一种奇怪的关联。“\u200b”被添加到用户名和密码的末尾。

日志:192.168.178.80 - - [02/Feb/2018:11:03:47 +0000] "POST/login HTTP/1.1"401 12 "-""UnityPlayer/2018.1.0b4 (UnityWebRequest/1.0, libcurl/7.51.0-开发)""-"192.168.178.80 - - [02/Feb/2018:12:55:33 +0000] "POST/login HTTP/1.1"200 361 "-""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ( KHTML,像 Gecko) Chrome/63.0.3239.132 Safari/537.36""-"

postman : console log

团结: console log

最佳答案

Unity 在用户名和密码末尾添加了零宽度空格。 (用 .TrimEnd('\u200b') 修剪它们)

WWWForm formData = new WWWForm();
formData.AddField("email", user.TrimEnd('\u200b'));
formData.AddField("password", pass.TrimEnd('\u200b'));
formData.AddField("_token", {{YOUR TOKEN}});

关于c# - 来自 Unity WWW 的 Laravel 5 登录 401 请求未经授权的 JWT(在浏览器和 Postman 中工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48581433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com