我遇到了这种奇怪的情况。我为我的Rails后端API开发了一个基于JavaScript的前端。
我有一个登录表单,用于将用户名和密码发布到我的TokensController
,返回存储在数据库中的authentication_token
。此令牌存储在cookie中,并随每个表单一起提交。
现在我想实现一个注销功能。所以,我删除了cookie,因此在请求中没有提交任何令牌。 (或者错误的一个,在这种情况下标题是Authentication: Token token="undefined"
)
但是,Rails后端仍会返回200 OK
所有数据,尽管定义了错误的令牌。这怎么可能?是否有用于验证请求的其他会话缓存?
这是我实现身份验证的超类:
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应用程序提交,但是它是否正确验证了用户?