EmberAuth和Rails 3会话cookie在注销后粘贴,rails将用户视为已通过身份验证

时间:2013-07-11 12:37:28

标签: api authentication ember.js

我有一个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)

谷歌搜索透露,这是为了防止经过身份验证的用户创建新帐户,这似乎是一个我不应该避免的合理政策。

然而,这很奇怪,因为我的前端余烬应用程序未处于身份验证状态。查看我的本地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

1 个答案:

答案 0 :(得分:0)

问题是我在会话中存储令牌。不得不用以下方法禁用它:

config.skip_session_storage = [:http_auth, :token_auth]
设计初始化程序中的