1

我在这里遇到了这种奇怪的情况。我为我的 Rails 后端 API 开发了一个基于 JavaScript 的前端。

我有一个登录表单,将用户名和密码发布给我TokensController,返回authentication_token存储在数据库中的数据。此令牌存储在 cookie 中,并与每个表单一起提交。

现在我想实现一个注销功能。因此,我删除了 cookie,因此请求中不会提交任何令牌。(或者一个错误的,在这种情况下,标题是Authentication: Token token="undefined"

但是200 OK,尽管定义了错误的标记,Rails 后端仍会返回所有数据。这怎么可能?是否有任何其他会话缓存用于验证请求?

这是我实现身份验证的超类:

module Api
  class SecureBaseController < ApplicationController

    prepend_before_filter :get_auth_token
    before_filter :authenticate_user!

    protected
    def get_auth_token
      puts token_value
      params[:auth_token] = token_value
    end

    def token_value
      if header && header =~ /^Token token="(.+)"$/
      $~[1]
      end
    end

    def header
      request.headers["Authorization"]
    end

  end
end

甚至puts在控制台中打印“未定义”,正如 Web 应用程序提交的那样,但它正确地验证了用户?

4

0 回答 0