我在这里遇到了这种奇怪的情况。我为我的 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 应用程序提交的那样,但它正确地验证了用户?