2010-04-19 14 views
8

Birden çok farklı erişim düzeyine sahip birden çok kiracılı sistemimiz vardır - bazen aynı kullanıcı için birden fazla rol arasında geçiş yaptıklarında bile. Bir şeylerin RESTful bir uygulamasına geçme üzerine bir tartışma başlatıyoruz. Ayaklarımı tüm REST ile ıslatmaya başlıyorum.REST, birden çok kullanıcı rolüyle önbelleğe alma ve yetkilendirme

Bir kaynağa eriştiğinde, özellikle de önbelleğe almayı dikkate alırken doğru kayıtlara erişimi sınırlandırmaya nasıl giderim? Kullanıcı A erişimi example.com/employees ise B kullanıcısından farklı bir yanıt alırlar; A kullanıcısı, farklı bir role geçerken farklı bir yanıt alabilir. Önbelleğe almayı kolaylaştırmak için, rolün kimliği bir şekilde uri'ye dahil edilmeli mi? Belki de example.com/employees/123 (REST kurallarını ihlal eden) gibi bir şey veya example.com/employees/role/123 gibi bir tür bağımlı kaynak olarak (ki bu aptalca gözüküyor, çünkü role/### her yerde URI'lere eklenecektir). Yardımcı olabilirim ama burada bir şey kaçırdığımı düşünüyorum.

çoklu kullanıcı

cevap

7

kullanıcı kimlik bilgileri bant kaynak tanımlayıcı dışı bir (yani. Farklı rollere aynı URL'den farklı görünümleri sunan) yolda pis dönecek gibi hareket olması söz düzenlenebilir. Kullanıcılar ve uygulamalar, aralarındaki URL'leri değiştirir, bu şeyler gerçekleştiğinde işler ters çevrilir ve URL farklı kimlik bilgileri için farklı içerikler döndürür.

  • yöneticileri
  • kullanıcıları example.com/admin/employees bağlanmak:

    Bu nedenle her rol hizmetine farklı bir yol erişmek gerekir, her rolü dünyanın farklı bir görünümü vardır söyleyebilirim

  • rol foo muhtemelen

Eğer ayırmak Bu şekilde example.com/foo/employees bağlanır eşit 'bu rolü filanca dünyayı gördüğünü' example.com/users/employees bağlanmak t 'dünya görüşünden' rolüne katılma 'kısmına erişilebilir. Bir yönetici, example.com/users/employees adresine bağlanabilir ve sıradan bir kullanıcının dünyayı nasıl gördüğünü doğrulayabilir. Yönetici ilk olarak daha düşük ayrıcalıklı bir takma adı taklit etmelidir.

Aynı zamanda DNS bölümünü de kullanabilirsiniz: admin.example.com/employees vs. users.example.com/employees. Bu, ilgili bir senaryo için, 'rol' bir güvenlik rolü değil, bir çoklu kiracı ad alanı olduğunda (ör. Her hizmet karşılığı hesap, hizmetin kendi "görüşünü" aldığında) geçerlidir.

+0

Tüm kalbimle katılıyorum. Kaynakları tararken arama motoru kullanmaya karar verdiğinizde diğer senaryoyu düşünün. Farklı URL'ler için aynı URL'leri kullanırsanız, arama motorunun aynı URL'leri farklı kimlik bilgileriyle taramalı ve bir şekilde sonuçların uygun erişim düzeyiyle sınırlı olmasını sağlamalıdır. Farklı erişim seviyeleri için farklı kaynaklara sahip olmak işleri kolaylaştırır. –

+0

Teşekkürler! Http://stackoverflow.com/questions/2676786/should-a-given-uri-in-a-restful-architecture-always-return-the-same-response adresinde bir sorum var. – keithjgrant

İlgili konular