Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 从.Net Core 3.1 Web API获取登录用户_Unity3d_Asp.net Core_Asp.net Core Webapi - Fatal编程技术网

Unity3d 从.Net Core 3.1 Web API获取登录用户

Unity3d 从.Net Core 3.1 Web API获取登录用户,unity3d,asp.net-core,asp.net-core-webapi,Unity3d,Asp.net Core,Asp.net Core Webapi,我已经为这个实现挣扎了几个月。我有一个解决办法,但它远远不是理想的 我一直在努力从我的Web API中访问当前登录的用户。通常,我可能会通过客户端登录,然后通过令牌进行授权。然而,我的问题是,客户端不是发出登录请求的软件 客户端是用Unity 3D编写的,并嵌入到站点中。它通过Web API与站点共享数据。然而,在用户访问客户端之前,他们必须通过标准的.Net核心登录系统登录到该站点。因此,正如您所看到的,无法将身份验证令牌传递给客户端。我试图做的是让Web API通过只访问当前登录用户的详细信

我已经为这个实现挣扎了几个月。我有一个解决办法,但它远远不是理想的

我一直在努力从我的Web API中访问当前登录的用户。通常,我可能会通过客户端登录,然后通过令牌进行授权。然而,我的问题是,客户端不是发出登录请求的软件

客户端是用Unity 3D编写的,并嵌入到站点中。它通过Web API与站点共享数据。然而,在用户访问客户端之前,他们必须通过标准的.Net核心登录系统登录到该站点。因此,正如您所看到的,无法将身份验证令牌传递给客户端。我试图做的是让Web API通过只访问当前登录用户的详细信息来响应请求

目前,我已经尝试通过HttpContext访问用户数据,但为了做到这一点,我必须在项目中启用Windows身份验证。但是现在,所有对Web API的调用都会导致401错误,因为客户端本身无法发送任何身份验证信息

因此,我需要做的是找到一种方法,在Web API中获取当前登录的用户信息,而API不需要接收任何令牌或其他信息即可完成此操作


有什么想法吗?

2020年8月5日更新

将身份验证令牌从
web
传递到
Unity 3D

由于您对客户端的了解较少,所以我举一个关于UnityWebPlayer和浏览器通信的示例

Unity Web Player对象有一个函数,
SendMessage()
,可以从网页调用该函数,以便调用Unity Web Player内容中的函数。此函数与Unity脚本API中的
GameObject.SendMessage
函数非常相似。从网页调用时,传递对象名、函数名和单个参数,
SendMessage()
将调用给定游戏对象中的给定函数

<script type="text/javascript" language="javascript">
<!--
//initializing the WebPlayer
var u = new UnityObject2();
u.initPlugin(jQuery("#unityPlayer")[0], "Example.unity3d");

function SaySomethingToUnity()
{
    u.getUnity().SendMessage("MyObject", "MyFunction", "Hello from a web page!");
}
-->
</script>

您可以使用发送
身份验证令牌





所以,我需要做的是找到一种方法来获取当前登录用户 Web API中的信息,API不需要接收任何 标记或其他信息来执行此操作


如果我们有一个
API
来获得您期望的
tokens
,那么您可以使用这个token访问所有API身份验证将无效,系统将变得不安全。因为每个人都可以使用magic
api

进行访问,所以登录失败时无法获得身份验证令牌。这就是为什么在调用Web API时出现401(未经授权)错误。为什么不能将身份验证令牌传递给客户端?我不能传递它,因为客户端实际上没有执行登录。登录是通过嵌入客户端的网站执行的。除了完全重写所有内容以便客户端处理登录,我想不出向其传递身份验证令牌的方法。这就是重点,您可以将身份验证令牌从web传递到客户端的Unity 3D。感谢您的帮助。我不确定它是否直接回答了这个问题,因为我目前无法获得unity项目的访问令牌,但它为我提供了一条调查途径。我猜,理论上,我可以在登录网页时生成一个令牌,在启动时,Unity项目可以尝试检索这个令牌。没错。如果您有更好的解决方案,请与我们分享。