J'ai deux applications RoR3:conditionnelle 'attr_accessible' en utilisant ActiveResource en Ruby on Rails
http://users.domain.local
http://profiles.domain.local
J'ai créé les 'utilisateurs/modèles/profile.rb':
class Profile < ActiveResource::Base
self.site = "http://profiles.domain.local"
end
Dans 'profiles/models/profile.rb' J'ai:
attr_accessible :name
Mon profil de table SQL contient ces colonnes:
- id
- Nom
- user_id
Donc, si je lance Profile.create(:name => "test_name")
un nouveau profil sera créé en http://profiles.domain.local
avec le nom "test_name". Pour des raisons évidentes de sécurité, je ne veux pas rendre accessible l'attribut 'user_id', mais je dois le définir sur la création de profil à partir de l'application 'users'.
J'ai essayé beaucoup de faire cela, mais je ne trouve pas de solution facile. Peut-être, il est possible avec une instruction if
près du 'attr_accessible' de l'application 'profile' qui remplit une requête de l'application 'user'.
Quelqu'un peut-il m'aider?
Êtes-vous sûr qu'Amazon utilise cette approche? Je sonne un peu "hackerable" ... Quoi qu'il en soit, je dois d'abord communiquer la clé de l'application "profils" puis les comparer. Tout au long de 'NET: HTTP' Demande GET? Est-ce la bonne façon? – user502052
La façon dont Amazon, Google, etc. le font: ils vous donnent une clé API, qui est essentiellement une longue chaîne de caractères aléatoires. La façon dont il est utilisé est comme un mot de passe: l'application 'profiles' l'envoie à l'application' users' (soit sur chaque requête, soit au début de chaque session). Sur 'profiles', la clé API sera généralement codée en dur ou dans un fichier de configuration. 'Users' vérifiera alors que la clé de l'API est valide, correspond à votre compte et est autorisée à effectuer l'action que vous demandez. N'oubliez pas d'utiliser SSL si vous envoyez des informations sensibles sur des réseaux non fiables. –
Dans ce cas, je n'ai pas besoin de SSL, mais pour les autres j'ai besoin de ça. Cependant, j'ai beaucoup de problèmes, tout en utilisant ActiveResource Class (un de mon problème: http://stackoverflow.com/questions/4653006/full-example-on-using-activeresource-with-a-certificate-authentication) – user502052