2010-12-14 56 views
0

Je souhaite limiter la portée d'un utilisateur, une fois authentifié, à un espace de noms spécifique. Mais ils seront dynamiques (c'est-à-dire pas un itinéraire nommé). exemple:Devise current_user vs user_session

/rails/redteam/ 
/rails/blueteam/ 
/rails/greenteam/ 

ou peut-être simplement:

/rails/ 
...or... 
/

si nous savons que leur « équipe » alors ne pouvait que supposer en quelque sorte dans le routage?

Comment le configurer au mieux et gérer ce en toute sécurité? dois-je stocker le nom de l'équipe dans user_session? Ou, interrogez le current_user pour leur groupe et vérifiez qu'il correspond à leur (s) groupe (s) connu (s) dans un before_filter?

Qu'en est-il des routes elles-mêmes? ID essentiellement glorifiés, peut-être un permalien de toutes sortes? ne sais pas le "chemin des Rails?"

btw- Je connais des gems d'autorisation comme CanCan et decl_auth mais en essayant d'éviter leur complexité, si possible, car je suis un peu un newb, si cela n'était pas déjà assez évident.

Répondre

2

Je suis au courant des gemmes d'autorisation comme Cancan et decl_auth mais en essayant d'éviter leur complexité, si possible

Vous êtes beaucoup mieux de prendre le temps d'en apprendre davantage sur l'un (ou l'autre, ou les deux) de ces gemmes que d'essayer de rouler votre propre solution, IMO. En fin de compte, vous rencontrerez des complications au fur et à mesure que vos besoins changeront, et sans un bon cadre sous-jacent à votre approche, les problèmes ne manqueront pas de se produire.

+1

Un peu ce dont j'avais peur ... Je suis vraiment à la recherche d'un moyen * facile * d'empêcher les utilisateurs de modifier (ou de voir d'ailleurs) les données d'une autre équipe. Ce que je vois, ou au moins comprenez à propos des gemmes d'autorisation, c'est qu'elles * semblent * plus adaptées à des rôles spécifiques * (administrateur, utilisateur, modérateur, etc.) et pas tellement à l'accès ou à la propriété *. Est-ce que je fais une supposition incorrecte? Si oui peut-être que vous pourriez recommander l'une des pierres précieuses ... – Meltemi

+0

Avec cancan, tout est question de capacité. "Suis-je capable de: mettre à jour cet objet". Comment vous implémentez cette capacité est à vous –

+0

J'ai seulement utilisé 'declareative_authorization'. CanCan est populaire ces temps-ci et est réputé facile à utiliser - je commencerais par cela. – zetetic