これらのアクションに従ってDeviseにこの問題があります:
- 新しいユーザーにサインアップします (正常に動作します)
- ユーザーメールを確認しました(正常に動作します)。その時点で、私は正常にログインしており、すべて正常に動作しています。
- ログアウトして再度ログインしようとすると、不正なエラー (401) が表示されます。
ここでサーバーログを見ると、何が起こるか:
Started POST "/users/sign_in" for 127.0.0.1 at 2012-10-26 10:26:23 +0200
Processing by Users::SessionController#create as JSON
Parameters: {"email"=>"olivier.milla@gmail.com", "password"=>"[FILTERED]", "remember_me"=>"0"}
WARNING: Can't verify CSRF token authenticity
User Load (0.0ms) SELECT `users`.* FROM `users` WHERE `users`.`email` = 'olivier.milla@gmail.com' LIMIT 1
(1.0ms) BEGIN
(0.0ms) COMMIT
(1.0ms) BEGIN
(0.0ms) UPDATE `users` SET `current_sign_in_at` = '2012-10-26 08:26:23', `sign_in_count` = 2, `updated_at` = '2012-10-26 08:26:23' WHERE `users`.`id` = 1
(25.0ms) COMMIT
Rendered devise/sessions/create.json.rabl (1.0ms)
Completed 200 OK in 135ms (Views: 22.0ms | ActiveRecord: 27.0ms)
Started GET "/accounts/new" for 127.0.0.1 at 2012-10-26 10:26:23 +0200
Processing by AccountsController#new as HTML
Completed 401 Unauthorized in 0ms
ご覧のとおり、私はログインしており、レンダリングされたビュー ( devise/sessions/create.json.rabl
) を取得し、「/accounts/new」にリダイレクトされた直後に、承認されていません。その後、任意の URL にアクセスしようとしても、不正なメッセージを受け取り続けることができます。
新しいデータベース (db:reset) でこれを試しました。ログインする前に Cookie をクリーンアップしてみました。
この振る舞いがどこから来るのか、何か考えはありますか?
Rails 3.2.8でDevise 2.1.2を使用しています。
アップデート
リクエストに応じて: AccountsController コード:
class AccountsController < ApplicationController
before_filter :authenticate_user!
def :index
@accounts = current_organization.accounts
end
def new
@account = Account.new(:organization => current_organization)
end
def create
@account = Account.new(params[:account])
@account.organization = current_organization
if @account.save
redirect_to :index
else
#TODO
end
end
end