Je suis en train de créer une application rails où la connexion est optionnelle. En d'autres termes, beaucoup des mêmes actions/vues/contrôleurs/pages fonctionneront connectés ou déconnectés. Vous obtenez simplement plus de fonctionnalités si vous êtes connecté (comme l'application se souvient de ce que vous avez fait). J'utilise actuellement restful_authentication et role_requirement, et je me demande quel niveau utiliser. Je pourrais ajouter un nouveau rôle "utilisateur" que tous les utilisateurs connectés, par exemple, puis require_role "user"
et avoir des blocs de vue en utilisant @user.has_role?
... ou je pourrais améliorer le côté authentification des choses et faire des vérifications pour voir si l'utilisateur est authentifié. Ou je pourrais faire autre chose. Existe-t-il un moyen standard de gérer cela dans les rails?Comment gérer la connexion optionnelle dans les rails
Répondre
Vous intégrez votre gemme d'authentification à une gemme d'autorisation. Pour commencer, je recommanderais cancan car il est très simple et direct.
Si vous utilisez cancan, vous définissez ce que l'utilisateur peut/ne peut pas faire dans models/ability.rb.
class Ability
include CanCan::Ability
def initialize(user)
if user.admin?
can :manage, :all
else
can :read, :all
end
end
end
Alors, selon vous, vous pouvez autoriser les fonctionnalités basées sur le rôle de l'utilisateur:
<% if can? :update, @article %>
<%= link_to "Edit", edit_article_path(@article) %>
<% end %>
Si vous recherchez plus de puissance, vous voudrez peut-être envisager d'autres petit bijou d'autorisation, telles que declarative_authorization.
Il n'est pas nécessaire de vérifier l'autorisation pour les actions qui autorisent tous les utilisateurs.
Si vous avez une autorisation par défaut dans votre ApplicationController, tels que:
before_filter :authorize
Ensuite, soit enlever que tout, et ajoutez le dans uniquement pour les actions qui requièrent une autorisation ou, dans chaque contrôleur vous pouvez le désactiver avec:
skip_before_filter :authorize, :only => [:action_method_name]
vous devriez avoir une méthode simple dans votre ApplicationController où vous pouvez passer dans un rôle et d'obtenir un vrai si l'utilisateur actuel est autorisé:
def authorized? role
return true if current_user.roles.collect{|r| r.name.to_sym}.include(role.to_sym)
false
end
Ensuite, vous pouvez vérifier la procédure pour le rôle que vous voulez dans vos actions.
- 1. Comment gérer la relation un-à-plusieurs optionnelle avec EDM?
- 2. Dans Rails Migration, comment gérer les multidatabases
- 3. Comment gérer les retards sur la connexion Telnet par programme?
- 4. Gérer les routes ambiguës dans Rails
- 5. Validation optionnelle dans ASP.NET
- 6. Comment gérer la connexion Internet dans l'application GWT
- 7. Comment faire une liaison optionnelle dans Guice?
- 8. Utiliser la clause OU optionnelle dans Linq.Table.Where()
- 9. Connexion depuis la base de données sqlite dans les rails
- 10. Erreur lors de la connexion dans les rails
- 11. Comment gérer les utilisateurs avec des droits de connexion interactifs?
- 12. Connexion dans Rails
- 13. Comment gérer correctement une connexion WCF défaillante?
- 14. Comment gérer ECONNRESET, Connexion réinitialisée par l'homologue
- 15. Rails 3 - AJAX, réponse JS - Comment gérer les erreurs
- 16. android Le service doit gérer l'échec de la connexion - comment?
- 17. Comment gérer les relations n: n avec Rails?
- 18. Comment afficher les liens de connexion/déconnexion sur les rails?
- 19. Tutoriel ou recettes pour gérer la "page" précédente et actuelle dans les rails
- 20. Comment gérer protect_from_forgery pour faire communiquer les applications Rails?
- 21. Gérer fréquemment appelé connexion WCF
- 22. gérer les dates BC dans Ruby on Rails
- 23. Quelle est la meilleure stratégie pour gérer les exceptions et les erreurs dans Rails?
- 24. Série optionnelle dans un diagramme SSRS?
- 25. Comment gérer plusieurs sessions utilisateur simultanées dans une application rails?
- 26. Comment gérer une clé primaire non auto-incrémentée dans Rails?
- 27. Ruby on rails - comment récupérer les chaînes de connexion
- 28. Connexion/Inscription Ruby on Rails?
- 29. Comment gérer les objets de date dans les formulaires ruby on rails?
- 30. Comment gérer les recherches?
J'aimerais aussi que certaines pages affichent des vues différentes si l'utilisateur est connecté ou pas connecté. Des conseils à ce sujet? –