当 Devise 超时时调用 SLO 终结点的最佳方式是什么?

What is the best way to call an SLO endpoint when Devise times out?

提问人:griswoldbar 提问时间:11/14/2023 更新时间:11/14/2023 访问量:12

问:

我正在使用 Devise 的模块。对于使用 SSO 登录的用户,我希望在会话超时时点击身份提供程序上的 SLO 终结点。Timeoutable

我试图找出插入此逻辑的最佳位置。

Timeoutable的逻辑主要存在于它的钩子中,在我看来,这是放置我的 SLO 标注的正确位置。但是这个解决方案(我认为)需要我用我自己的定制版本替换,这似乎有点笨拙。Warden::Manager.after_set_userTimeoutable

我还考虑过将逻辑放在自定义故障应用程序中,例如

  config.warden do |manager|
    manager.failure_app = Class.new(Devise::FailureApp) do
      def redirect
        if warden_message == :timeout && its_an_sso_session
          redirect_to slo_path
        else
          super
        end
      end
    end
  end

为此,我需要将它是 SSO 会话的事实存储在 Failure App 可以看到的某个地方,例如 cookie(目前我将其存储在 Rails 会话本身中,当我们到达 Failure App 时,该会话已被销毁)。

关于做到这一点的最佳方法有什么想法吗?在某个地方有没有其他的钩子可以使用?

Ruby-on-Rails 设计 单点登录

评论


答: 暂无答案