To prevent an action from executing in some controller in a rails app unless authenticated you could use
before_filter :validate_user, :only => [:create, :update]
This would prevent create and update from being executed unless an authorized user was attempting it. If the actions create and update are in a controller within a rails engine this does not work.
How do you conditionally block the execution of an action on a controller that is within a rails engine?