【问题标题】:erlang and external authenticationerlang 和外部身份验证
【发布时间】:2011-05-12 00:48:54
【问题描述】:

一个简单的场景。用户通过一些高级框架(比如说rails)烘焙的表单登录并开始聊天。聊天是 erlang 编写的,只有经过身份验证的用户才能参与。这意味着,来自客户端的每个请求(包含一些会话 id)都需要在 erlang 代码中以某种方式进行验证(身份验证)。显然 erlang 对登录用户一无所知,需要向框架询问这些信息。

问题是如何设计erlang和框架之间的通信不造成额外的瓶颈?

我也在考虑在 erlang 中存储会话 ID。但是与同步(新用户登录时)和会话超时相关的额外工作会让人头疼。

【问题讨论】:

    标签: authentication erlang


    【解决方案1】:

    在这种情况下,没有什么比免费午餐更好的了。如果您将身份验证权限保留在 erlang 之外,您将不得不处理所有这些令人头疼的问题。您可以在 erlang 中提供一些缓存以提高速度,但这将成为瓶颈,您还必须处理所有缓存一致性问题。恕我直言,最好的解决方案是制作 erlang 身份验证权限并为高级框架提供身份验证。

    【讨论】:

    • 我刚刚意识到维护这种缓存的唯一问题实际上是会话超时。添加新缓存条目(当用户登录时)、删除现有条目(当用户注销时)之类的操作是微不足道的,但检测用户会话何时过期和清除缓存似乎是一个真正的挑战。
    【解决方案2】:

    如果我们谈论的是 Rails,我相信可以从 Erlang 连接到同一个数据库并从会话表中检索会话数据(前提是您使用 db 作为会话存储)。您甚至可以通过这种方式将数据传递给 Rails。

    【讨论】:

    • 这将是一个不错的解决方案(尤其是在使用沙发数据库时),但这也意味着每次请求进入时都要查询数据库。这是我想要避免的瓶颈。
    猜你喜欢
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 2017-09-28
    相关资源
    最近更新 更多