1
私は、deviseによる認証を実装し、CanCanでロール権限を管理しています。私のアプリケーションはレシピを管理しています。レシピを破棄するとセッションが閉じられ、sign_inビューにリダイレクトされます。削除時のDevise + CanCanの奇妙な動作
認証とアクセス許可を確認していない場合は正常に動作します。
これは非常に奇妙で、なぜこのようなことが起こるのかわかりません。助けてください。
おかげ
LOG:
Started POST "/recipes/21" for 127.0.0.1 at Thu Dec 08 19:53:30 +0100 2011
Processing by RecipesController#destroy as HTML
Parameters: {"id"=>"21"}
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = 5 LIMIT 1
Completed 401 Unauthorized in 44ms
Started GET "https://stackoverflow.com/users/sign_in" for 127.0.0.1 at Thu Dec 08 19:53:30 +0100 2011
Processing by Devise::SessionsController#new as HTML
Rendered devise/shared/_links.erb (2.5ms)
Rendered devise/sessions/new.html.erb within layouts/application (14.2ms)
Completed 200 OK in 52ms (Views: 20.8ms | ActiveRecord: 0.0ms)
RECIPES_CONTROLLER:
class RecipesController < ApplicationController
before_filter :authenticate_user!
load_and_authorize_resource
def destroy
@recipe = Recipe.find(params[:id])
@recipe.destroy
redirect_to recipes_url, :notice => "Successfully destroyed Recipe."
end
ABILITY:
あなたは、あなたのレイアウトで<%= csrf_meta_tags %>
を含めることを確認する必要がありアスカーあたり
ユーザーはSuperAdminであり、彼はレシピを所有しています... – Daniel
答えへの更新を見る:コメントのコードを読むことはあまり読めない...出力を教えてください。 –
ここで私の答えを期待しているかどうかわからない... 2番目のコマンドは私のためには動作しませんが、 "puts user.role?:super_admin"を入力するとTrueと表示されます。最後のコマンドはTrueと表示されます。ユーザーにレシピを破棄する権限がない場合、アプリケーションはデベロッパセッションを閉じません。 – Daniel