0

我有一个 ember 应用程序访问带有身份验证设计的 Rails API,或多或少遵循 ember-auth-demo github 项目。

一切正常,但在我的测试中,我注意到如果我登录和注销然后尝试注册一个新帐户,rails 会抱怨:

Filter chain halted as :require_no_authentication rendered or redirected
Completed 302 Found in 2ms (ActiveRecord: 0.2ms)

谷歌搜索显示这是为了防止经过身份验证的用户创建新帐户,这似乎是我不应该规避的合理策略。

但是,这很奇怪,因为我的前端 ember 应用程序未处于经过身份验证的状态。查看我当地的 cookie 商店,remember_token在注销时成功销毁。但是会话 cookie 仍然存在。如果我手动销毁它,那么一切都会按预期恢复工作,后端应用程序不会认为用户已通过身份验证并正常处理请求。

为简洁起见,相关文件在此要点中:https : //gist.github.com/DVG/5975064,但我的 sign_out 函数在这里:

#EmberAuth Signout Method
App.ApplicationController = Ember.Controller.extend
  signOut: ->
    App.Auth.signOut()
    App.Auth.destroySession()

#Rails SessionsController#destroy
def destroy
  return missing_params unless params[:auth_token]

  resource = resource_class.find_by_authentication_token(params[:auth_token])
  return invalid_credentials unless resource

  resource.reset_authentication_token!
  render json: {user_id: resource.id}, status: 200
end
4

1 回答 1

0

问题是我将令牌存储在会话中。不得不禁用它:

config.skip_session_storage = [:http_auth, :token_auth]

在设计初始化程序中

于 2013-07-11T14:25:34.223 回答