我正在构建一个同时具有 API 和 UI 的 Rails 应用程序,我已经为 API 实现了 HTTP 令牌身份验证(标头),并希望尽可能继续为 Web 应用程序使用相同的方法。
我正在保存用户令牌session[:token]
并使用authenticate_or_request_with_http_token
身份验证方法。application_controller 具有 before 过滤器,并且所有其他控制器都被继承,因此 API 中的每个端点和 Web 应用程序中的每个页面都需要 HTTP 标头令牌。
API 工作正常,因为合作伙伴应用程序每次都发送令牌以访问端点,但在 Web 应用程序的情况下,我们第一次获得令牌(当用户从合作伙伴应用程序重定向时)并且控制权被转移到我们的应用程序。然后我们需要一种方法来为 rails 应用程序中的每个路由/页面发送 HTTP 标头令牌。请建议我一种方法来做到这一点,或者如果这看起来很复杂,请建议一种完全不同的方法。
编辑:
def authenticate_user
authenticate_or_request_with_http_token do |token, options|
user_id = Setting.long_decode_id(token)
user = User.find_by(id: user_id)
if (user.present?)
session[:api_current_user] = user.id