2009-10-03 9 views
0

J'essaie d'utiliser Authlogic pour protéger certains champs d'éditeur en place que j'ai sur une page. J'ai protégé toutes les méthodes dans mon contrôleur, mais il semble que in_place_editor appelle des trucs bizarres qui n'apparaissent même pas dans mes routes, comme "/ quotes/set_quote_text/1". Le numéro un est-il un site qui en dit plus sur ces routes "secrètes"? Ou est-ce quelque chose qui en place edit ajouté que je ne sais pas? C'est juste un peu énervant qu'il n'apparaisse même pas quand j'affiche toutes les routes.authlogic et ajax en place édition avec des rails, également des problèmes de routage

En supposant que je le découvre, je n'ai aucune idée de comment protéger les choses qui ne sont pas des méthodes dans mon contrôleur. Puis-je protéger tout un itinéraire?

Une autre question est que, même si je restreins la route de mise à jour, les champs de l'éditeur en place sont rendus pour tout. J'imagine que la façon de le faire serait de créer un assistant qui rendrait la version appropriée en fonction de si l'utilisateur est connecté ou non. Je ne suis pas sûr de ce que je vérifierais pour voir si quelqu'un est connecté ou non, puisque je l'ai fait tout dans le contrôleur ... Aussi, des conseils pour cela: le partiel rendrait juste l'une des 2 versions d'un partiel en fonction de l'état connecté, ou existe-t-il un autre moyen de le faire?

Merci!

Répondre

1

Par défaut Rails inclut les routes suivantes:

map.connect ':controller/:action/:id' 
map.connect ':controller/:action/:id.:format' 

De plus, comme vous le savez probablement, toutes les méthodes de régulation publiques servent que les actions du contrôleur.

le contrôleur suivant:

class SampleController < ActionController::Base 
    def test 
    render :text => "text" 
    end 
end 

Donc, avec les routes par défaut, /sample/test appellera SampleController#test

est intéressant de savoir aussi que in_place_edit_for(object, attribute, options = {}) définit une nouvelle méthode sur le contrôleur appelé set_#{object}_#{attribute}. Dans votre cas, il s'agit de set_quote_text.

Pour répondre à vos questions:

  • Pourquoi ne pas l'itinéraire affiché dans rake routes: Presque certainement c'est parce qu'il utilise cette voie par défaut que j'ai parlé au début. Je supprime souvent ces routes de sorte que seules les routes que je définis explicitement seront utilisées.
  • Comment protéger l'action in_place_edit?: Maintenant que vous connaissez le nom de l'action, vous pouvez l'ajouter à votre liste d'actions protégées. Je suppose que vous avez quelque chose dans le style de before_filter :authentication_required, :only => LIST_OF_ACTIONS_REQUIRING_AUTHENTICATION. Plus sûr que cela, cependant, est d'utiliser sauf et fournir une liste de toutes les actions que vous ne voulez pas protéger: before_filter :authentication_required, :except => LIST_OF_ACTIONS_THAT_DON'T_REQUIRE_AUTHENTICATION

Espérons que c'est ce dont vous avez besoin.

+0

Merci, la méthode: sauf est beaucoup plus sûre et couvre plus de cas. Cependant je suppose que je suis encore confus sur le fait qu'il fait plusieurs routes. Si je voulais protéger ceux en particulier, comment pourrais-je le faire parce qu'il y a tellement de routes générées pour chaque attribut? Pourrais-je protéger toutes les routes set_ globalement? –

+0

Je ne suis pas sûr de ce que vous voulez dire. Il n'y a qu'une seule route générée par attribut, sauf si vous faites référence à autre chose. –

Questions connexes