2

我正在构建一个同时具有 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
4

1 回答 1

1

我不知道使用标头令牌是否是 Web 应用程序中最直接的方法,您是否有理由这样做?您需要将令牌注入用户发出的每个请求中,因为他们的浏览器通常不会为他们执行此操作。

相反,为什么不在第一次访问时使用令牌(如果这是您想要控制访问的方式),但在第一个条目之后设置一个会话标志以在过滤之前跳过它,直到会话过期?

或者,那里有一些很棒的身份验证宝石,您可以使用其中之一(例如设计)

于 2016-04-14T13:09:57.393 回答