工作人员如何使用唯一的标识符(例如用户名或IDS)来区分用户
Workerman本身并没有以数据库支持的应用程序的方式区分用户。 Workerman是一个高性能异步事件驱动的框架。它充当服务器,管理连接和处理请求,但并没有内在地“知道”有关连接客户端的身份的任何信息。 用户识别和管理是由在Workerman的顶部上构建的应用程序逻辑来处理的职责。>
您的应用程序需要实现机制来识别和跟踪用户。 常见方法包括:
-
会话IDS:您的应用程序可以在每个连接客户端生成唯一的会话ID并存储这些ID,以及关联的用户数据(如果是身份验证),在数据库,缓存中(例如REDIS或MEMCACHED),甚至在WorkerMan Process本身(例如较小的应用程序)中(例如,较小的应用程序)。 客户端的每个后续请求都将包括会话ID,从而允许您的应用程序检索用户的信息。
- 基于代币的身份验证:这是一种更安全的方法,尤其是对于较大的应用程序。 成功身份验证(例如,使用用户名/密码)后,您的应用程序向客户端发行了唯一的令牌。然后将此令牌包含在后续请求中,从而允许您的应用程序验证用户的身份,而无需不断传输敏感信息。 JWT(JSON Web令牌)是对此的流行选择。
- 如果使用WebSockets,您可以利用连接本身在该连接范围内隐含地识别用户。但是,这在同一用户的多个连接之间不起作用。如果您想在不同的连接或会话中跟踪用户,则仍然需要一个健壮的会话管理系统。
本质上,Workerman提供了基础结构。您的应用程序代码定义了如何区分和管理用户。
> Workerman如何处理多个并发用户
> Workerman擅长处理大量并发用户,这要归功于其异步,非块架构。 Workerman并没有为每个连接创建新的线程或过程,而是使用单个线程(或一小部分线程)使用事件驱动的模型同时管理众多连接。客户连接或发送数据时,工作人员会记录事件并继续处理其他事件而不会阻止。 这比传统的基于线程或基于过程的服务器更有效,尤其是在重负载下。
处理并发的特定机制包括:
- >事件驱动的体系结构:>
-
工作过程/线程/线程(可配置):
workerman允许您允许您在工作过程或线程的数量上配置基于您的服务器的数量,从而使您的服务器效果和预期的资源和预期。 越来越多的工人可以处理更多并发的连接,但是每个工人都会消耗资源。 >连接池(用于数据库交互):
虽然不是直接是工作人员核心功能的一部分,但使用连接池的数据库交互进行连接池(如果您的应用程序与数据库进行互动)在处理过程时会在处理许多机制时进行了许多合并的 > Workerman本身不提供内置的身份验证或授权机制。 这些功能必须在您的应用程序逻辑中实现。 工作人员仅提供通信层。 您需要与外部身份验证系统集成或构建自己的。
与工作人员集成身份验证和授权的常见方法包括: -
- database-backed authentication:在数据库中存储用户凭证(e.g.,用户/password hashes hes hes hes hes hes hes hes hes hes a database)。您的申请代码将在登录尝试时对数据库验证凭据。
-
第三方身份验证服务:使用诸如OAuth 2.0或OpenID之类的服务或OpenID连接以处理用户身份验证和授权,简化了开发过程,并利用了现有的安全基础结构。 API密钥可以提供更简单的身份验证方法。
>授权,一旦对用户进行身份验证,通常涉及检查与用户角色或帐户相关的权限。 这可能涉及数据库查询或检查应用程序中定义的访问控制列表(ACL)的角色。
>> Workerman可以有效,有效地管理用户会话吗?
工作人员本身无法直接管理会话。 它提供了基本的通信层,但是会话管理的责任取决于您的应用程序。 但是,它的异步性质使其非常适合于有效的会话管理,并与适当的技术相结合。> 有效而有效的会话管理与工作人员通常涉及:>使用会话存储机制:
- 这可以是数据库,缓存(redis,memcached),甚至是内存商店(适用于较小的应用程序)。 选择一个解决方案,该解决方案适当地缩放为您的预期负载。
-
会话ID管理:>为每个用户生成唯一的会话ID并安全地存储。
>
-
实施机制,以自动到期,以自动过期,以改善安全和资源的安全和资源 >定期从会话存储中删除过期的会话,以防止其过度生长。>通过仔细选择和实施会话管理策略,您可以在基于工作人员的应用程序中有效,有效地处理大量的并发用户。 请记住,有效的会话管理对于安全性和性能都至关重要。>
以上是workerman是怎么区分用户的的详细内容。更多信息请关注PHP中文网其他相关文章!