如何使用'memcached'处理面向服务的体系结构中的用户身份验证?

时间:2011-03-03 09:17:08

标签: ruby-on-rails ruby ruby-on-rails-3 session

我正在使用Ruby on Rails 3,我想在Service-Oriented Architecture(SOA)中处理用户身份验证。

此时我在同一台服务器上有3个应用程序(现在):

  • pjtname.com
  • users.pjtname.com
  • others.pjtname.com

我想使用memcached(这是一种非常棒的方法来避免查询数据库),但我听说过系统内存不足时会出现问题,例如问题用户无法登录。

但是,我想在pjtname.com缓存中至少存储user_id值,这样就更难以耗尽内存。以下是我想要做的步骤,但我不知道这是否是实现我的目标的最佳方式。

  1. 通过SSL将用户凭据从pjtname.com发送到users.pjtname.com;
  2. users.pjtname.com侧的
  3. 使用中间件拦截并登录用户;
  4. 登录成功后,通过SSL将用户会话身份验证信息(例如:user_id字符串)从users.pjtname.com发送回pjtname.com;
  5. pjtname.com侧查找缓存中的user_id,如果已过期,请在步骤1重新开始。
  6. 那么,您是否建议将memcached用于此目的?

    • 如果是,我可以从哪里开始?
    • 如果不是,建议使用什么方法?

    @Mörre评论的

    更新

      

    为什么要发送身份验证?   网站之间的信息,不能他们   只需从中获取会话数据   (同)数据库?

    这是因为我试图在不同的服务器上扩展RoR应用程序,每个服务器都有自己的数据库。

      

    提供建筑建议   什么,必须看到整个图片   你的任务来自客户点   观点,并了解他们的意图和   约束

    “图片”是我有3个RoR应用程序(pjtname.comusers.pjtname.comothers.pjtname.com)我需要处理数据以提高整个系统的性能。在这种情况下,我需要在中心位置(pjtname.com)处理用户会话,以便仅在当前用户通过身份验证时才能访问其他应用程序数据(users.pjtname.comothers.pjtname.com),即登录。

1 个答案:

答案 0 :(得分:0)

鉴于你到目前为止所解释的内容,我的回答是否定的,我不会推荐这个。使用before_filter进行身份验证,将auth存储在会话中。

现在,如果您曾询问是否可以将memcached用作会话存储,我会说这是可能的。但是,使用memcached将无法帮助您描述的过于复杂的消息传递方案。