rails 4 - 没有数据库的 ldap 身份验证和用户对象

rails 4 - ldap authentication and user objects without database

我有一个应用程序,用户可以在其中登录并使用 LDAP 服务器对他们进行身份验证。那部分我不满意,但是在处理用户和多个会话时会出现问题。

当用户通过身份验证时,我从继承自 ActiveModel 的用户模型创建一个新的用户对象,从 LDAP 条目中保存他们的姓名和电子邮件。这是在 sessions_controller 中以用户作为实例变量完成的。即 @user = User.new 但是,当 application_controller 中的 current_user 检查用户对象时,它的值为 nil
我猜这是一个范围问题,应用程序控制器无法在会话控制器的值中看到实例变量。

在不使用数据库的情况下,我如何处理保存关于用户的最少信息并让它在他们的会话中持续存在?
在使用 class 变量 @@user 并将其设置为 application_controller 之前,其他用户一次只能登录一个...

提前感谢您的帮助!

假设你的User对象很小,你可以把它存储在session中。

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