Ruby on rails rails 4-ldap身份验证和不带数据库的用户对象

Ruby on rails rails 4-ldap身份验证和不带数据库的用户对象,ruby-on-rails,object,authentication,activemodel,Ruby On Rails,Object,Authentication,Activemodel,我有一个用户登录的应用程序,LDAP服务器用于对他们进行身份验证。这一部分我已经记下来了,但在处理用户和多个会话时会出现问题 当用户通过身份验证时,我从从ActiveModel继承的用户模型中创建一个新的用户对象,并从LDAP条目中保存他们的姓名和电子邮件。这在sessions\u controller中完成,用户作为实例变量。i、 e.@user=user.new 但是,当application\u controller中的current\u user检查用户对象时,其值为nil 我猜这是一个

我有一个用户登录的应用程序,LDAP服务器用于对他们进行身份验证。这一部分我已经记下来了,但在处理用户和多个会话时会出现问题

当用户通过身份验证时,我从从ActiveModel继承的用户模型中创建一个新的用户对象,并从LDAP条目中保存他们的姓名和电子邮件。这在
sessions\u controller
中完成,用户作为实例变量。i、 e.
@user=user.new
但是,当
application\u controller
中的
current\u user
检查用户对象时,其值为
nil

我猜这是一个范围问题,应用程序控制器无法在会话控制器的值中看到实例变量


在不使用数据库的情况下,我如何处理保存有关用户的最小信息并使其在会话期间保持不变的问题
以前,当使用类变量
@@user
并在
application\u controller
中设置它时,其他用户一次只能登录一个…

提前感谢您的帮助

假设您的用户对象很小,您可以将其存储在会话中

class SessionController < ApplicationController
  def authenticate
    # Handle LDAP-auth and we now have a user
    #   ldap_authenticated? should be true
    #   ldap_user contains relevant info from LDAP

    session[:user] = User.new(email: ldap_user.email) if ldap_authenticated?
  end
end


module ApplicationHelper
  # Use this to access the current user everywhere in the app
  def current_user
    session[:user]
  end
end
class SessionController
您可能希望签出类似的内容,以避免重新创建所有身份验证/当前用户代码。当我签出时,它没有一种在没有数据库的情况下保存用户信息的好方法。我将尝试一下,如何访问
用户
对象属性?比如
session[:user]。email
?我会使用像
current\u user这样的东西。email
不管你怎么想,你都可以像散列一样访问它。当然,lol
session[:user][“email”]
,非常感谢!