0

私は、多かれ少なかれember-auth-demo githubプロジェクトに従って、認証用のデバイスを使用してRails APIにアクセスするemberアプリを持っています。

すべてが機能しますが、私のテストでは、サインインしてからサインアウトしてから新しいアカウントを登録しようとすると、Rails が次のように文句を言うことに気付きました。

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

これは、認証されたユーザーが新しいアカウントを作成できないようにするためのものであることが Google によって明らかになりました。

ただし、私のフロントエンドの 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 に答える