Question

Mon application a une partie d'utilisateur et / partie admin. Il existe 2 modèles compte (comme un client) et d'administration, et j'authentifier compte et administrateur séparément. Admins ne devraient pas accéder à la part du compte et les comptes ne doivent pas accéder à la zone d'administration. Y at-il une solution pour moi ou je devrais écrire 2 applications différentes pour les utilisateurs et les administrateurs, puis attendre merb 1.1 et les monter en quelque sorte dans 1 application? Toutes les idées?

Était-ce utile?

La solution

votre question semble très intéressant pour moi, avait même des problèmes'ai au début. Donc, je peux proposer des solutions différentes à partir de laquelle vous pouvez sélectionner l'un dépend de la structure de votre application.

  1. Si tous les utilisateurs appartient à une classe, mais a champ spécial (comme UserClass = (: client,: modérateur,: admin, etc.) `ll avoir un minimum de modifications d'application, il suffit de vérifier le paramètre de classe d'utilisateur dans vos contrôleurs / points de vue. Je pense que ce n'est pas une bonne idée pour vous.

  2. Les meilleures pratiques - à utiliser l'authentification Merb stratégies. Il est mécanisme très flexible, de sorte que vous pouvez sélectionner les classes que vous voulez travailler avec.

Par exemple, 2 stratégies ont `ll de base: ClientAuth, AdminAuth. Les deux d'entre eux utiliseront différentes classes d'utilisateurs (clients, Admin). Tout ce que vous avez besoin - créer le fichier de stratégie personnalisée, puis connectez-le à votre routeur comme ceci:

authenticate(ClientAuth) do
  match('/profile').to(:controller => ProfileController)
end

authenticate(AdminAuth) do
  match('/admin').to(:controller => AdminController)
end

Ou, vous pouvez utiliser l'authentification dans le contrôleur:

class AdminController
  :before ensure_authenticated, :with => [AdminAuth]

  def index
     ... your stuff ...
  end
end

En outre, vous pouvez même utiliser un seul contrôleur pour l'authentification pour les deux classes en utilisant les deux stratégies comme ceci:

class AdminController
  :before ensure_authenticated, :with => [AdminAuth, ClientAuth]
end

Juste parce que vous avez défini les différentes classes d'authentification (Admin, client) pour vos stratégies que vous serez en mesure d'obtenir des informations à ce sujet: session.user.class (il est une méthode rubis de base pour connaître le nom de la classe d'objet)

Voici quelques liens utiles:

  1. http://www.slideshare.net/hassox/merb-auth-presentation
  2. http://merbunity.com/tutorials/19
  3. http://www.slideshare.net/carllerche/merb -pluming-le-routeur-présentation
  4. http : //merbivore.com/documentation/1.0/doc/rdoc/merb-auth-core-1.0/index.html a = C00000025 & name = Stratégie
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top