【问题标题】:Add column to Active Record Session Store将列添加到 Active Record 会话存储
【发布时间】:2018-04-06 08:38:07
【问题描述】:

我有一个 Rails 应用程序,它实现了 CAS 协议,旨在处理用户身份验证。而且我在实现单点注销时遇到了麻烦,因为当 rails 应用程序收到 sso 请求时,我需要保存票证 ID 以删除会话。

我不太明白如何修补 Active Record 会话存储,以便在每次生成新用户会话时保存票号,以便我可以使用该票号从会话表中删除。

我目前正在使用会话存储的默认行为,但以下情况除外:

ActiveRecord::SessionStore::Session.primary_key = 'session_id'
ActiveRecord::SessionStore::Session.serializer = :json

【问题讨论】:

    标签: ruby-on-rails cas


    【解决方案1】:

    您的意思是喜欢在他们登录时、在控制器中执行session[:ticket_id] = ...,还是因为它只是一个模型,您可以对其进行扩展;这只是一个模型!您可以进行正常迁移。你可以添加回调。

    class ActiveRecord::SessionStore::Session
      before_create :set_ticket_id
    
    end
    

    然后你可以做ActiveRecord::SessionStore::Session.find_by_ticket_id session[:ticket_id]之类的事情

    【讨论】:

    • 我想到了before_create,但我不确定如何从模型中访问票号(它的请求参数)
    • 我会将工单 ID 添加到用户模型中,并将用户 ID 存储在会话中。或者我会使用已经构建的东西,比如github.com/nbudin/devise_cas_authenticatable
    猜你喜欢
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多