我想使用Devise的控制器輔助方法signed_in?檢查用戶是否已經簽名,如果是的話我想重定向到一個特定的頁面。設計如何添加登錄檢查自定義會話控制器?
我試過這個,但signed_in?方法總是返回true,我該如何做這個工作?
class SessionsController < Devise::SessionsController
def new
redirect_to root_url
end
def create
if signed_in?(resource_name)
redirect_to where_-_want_to_url
else
resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure")
return sign_in_and_redirect(resource_name, resource)
end
end
def sign_in_and_redirect(resource_or_scope, resource=nil)
scope = Devise::Mapping.find_scope!(resource_or_scope)
resource ||= resource_or_scope
sign_in(scope, resource) unless warden.user(scope) == resource
return render :json => {:success => true, :redirect => stored_location_for(scope) || after_sign_in_path_for(resource)}
end
def failure
return render :json => { :success => false }
end
end
你想用這個做什麼?你只是想顯示一個不同的**主頁**取決於用戶是否登錄? – Ashitaka 2012-03-23 20:22:46
不,有一種情況是登錄頁面被刪除,但實際上用戶已經登錄。所以我想做服裝重定向 – Rn2dy 2012-03-23 20:24:00