云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

免备案CDN_cdn劫持_免费申请

小七 141 0

社区提示:服务器端身份管理

本社区提示详细介绍了如何在纯服务器端以及混合服务器端和客户端实现中维护用户的身份。使用这些说明,您可以确保用户标识在所有服务器端更新中保持一致。最近我们发布了一个关于维护用户身份的社区提示,它强调了当用户从多个客户端设备登录时身份管理的细微差别。这篇文章提供了很好的洞察力和策略,以确保用户的身份在与你的网站或应用程序的交互中保持一致。虽然涉及服务器端更新的实现遵循相同的基本原则,但在本文中,我们将深入探讨如何从服务器端角度维护身份。下面我们将概述两种可能的实现方案:只从服务器发送数据,或者同时从服务器和客户端发送数据。仅服务器端实现假设所有事件都源于服务器(例如跟踪对API的请求),维护身份的过程很简单。每个事件都应该有一个唯一的标识符(在Mixpanel中称为Distinct ID)来区分用户,这意味着从用户的第一次交互开始,您需要生成自己的ID并将其与每个事件一起发送。当访问者处于匿名状态时,您需要在服务器上生成一个唯一的ID,并为用户保持一致(在每个事件中发送它)。如果您的工作流支持标识用户(注册或登录),那么您可以选择为该匿名ID创建别名(PHP/Python/Ruby),或者继续通过服务器上以前存在的ID来标识用户。总的来说,纯服务器端实现可以防止出现主要的复杂情况,因为在任何给定的时间内,由服务器单独决定用户的身份。混合服务器和客户端实现有些事件本质上与客户端交互相关(如单击按钮),有些事件通常应驻留在服务器上(如存储事务)。可以说,某些类型的事件可能会有重叠,这意味着您最终需要根据您的特定用例来决定将在哪里记录事件。为了演示一个混合服务器和客户端实现的示例,我们假设在一个网站上有一个通用的注册工作流(JavaScript和PHP)。这个工作流程的一部分是在客户端加载注册表单,另一部分是实际注册本身,之后我们将用户存储在服务器上。这两个事件都可以在服务器端触发,但前者通常位于客户端,因为它可以很容易地检测到页面何时完成加载。在服务器上触发注册事件是很有用的,因为您可以确保它只在成功时触发一次,您可以随时获得新创建的ID(用于别名),并且您不必处理客户端问题,例如用户多次加载确认页。由于事件收集是在客户端开始的,我们希望将用户自动生成的不同ID从客户端发送到服务器以保持一致性。下面是一个用JavaScript编写的简单注册表单:这个注册表单只有两个输入,名称和电子邮件,但我们还包括一个隐藏字段,它将把不同的ID信息传送到服务器。在表单将信息发送到服务器之前,我们需要使用以前事件中使用的当前不同ID填充该字段的值:$(函数(){var myForm=$("#myForm");//跟踪页面加载混音面板.track("页面加载",{"页面":"注册表单"});/*听正在提交的表格;在发送请求之前,将添加当前的不同ID*/我的表单.提交(功能(事件){变量hiddenInput=我的表单。查找("input[name='distinct_id']");hiddenInput[0]。值=mixpanel.get_distinct_id();});});默认情况下,distinct ID与Mixpanel JavaScript库一起存储在cookie中,但是通过表单传递它简化了这个过程,因为不需要解析cookie然后将其发送到服务器。一旦表单被提交,服务器将收到一个负载,其中包含用户输入的信息,加上包含用户不同ID的附加字段。服务器上的信息以及正确的表单验证完成后,我们需要做的就是跟踪事件,并在服务器上为用户创建一个新ID的别名,该别名是在客户机上自动分配的。创建别名后(可以在客户端或服务器端完成),我们的服务器不再需要跟踪原始的不同ID,因为我们可以在服务器端和客户端使用自己生成的ID。尽管如此,将别名创建请求发送到Mixpanel是一个需要花费一些时间才能解决的操作,因此为了避免任何争用情况,您应该在创建别名后2秒钟内使用原始的不同ID发送任何事件和概要文件更新。下面,您将看到用于建立此别名并使用一致的不同ID将事件发送到Mixpanel的示例PHP代码://采用表单提交的虚构用户类//并将其存储在数据库中需要'用户.php';$u=新用户类();//导入Mixpanel要求"供应商"/自动加载.php';$mp=Mixpanel::getInstance("Mixpanel_PROJECT_TOKEN");$result=寄存器用户(数组('name'=>$\u POST['name'],'电子邮件'=>$\u POST['email']));//registerUser函数将返回//如果创建的用户有错误或ID,则为0如果($result>0){//用户已正确保存//我们可以触发事件并创建别名//我们用原始的不同的\u id发送事件以防止//任何与之前使用别名相关的赛车情况//它已经被创造出来了$current_distinct_id=$_POST['distinct_id'];$mp->identify($current_distinct_id);$mp->track("注册完成");//创建别名$mp->createAlias($current_distinct\u id,$result);}//返回带有结果的JSON响应echo json_encode(array('result'=>$result));?>上述代码中所发生的事情的分步指南包含在代码注释中,但除了采取的措施外,还必须回顾整个概念:在客户端上使用不同的ID跟踪事件客户机将信息连同当前的不同ID一起发送到服务器服务器处理了这些信息,用新的ID创建了一个别名,并将其发送回客户机如前所述,由于这是一个web环境,PHP可以读取请求中包含的cookie(默认情况下,不同的ID存储在cookie中),但在本例中,这种方法并不是用来说明有目的地发送所述ID的。读取cookie通常不是一个选项,因为客户端可能是本机移动应用程序,或者您可能正在使用本地存储而不是cookies,因此最佳实践是使用Mixpanel方法为您完成工作。当您有一个混合的服务器端和客户端实现时,这是一条双向通道,每个组件都应该彼此通信以保持身份。对于如何维护服务器端身份有任何疑问或疑问?伸出援手support@mixpanel.com跟聪明的人说话,快。