2014-09-23 37 views
10

HapiJS'yi API sunucumuz olarak kullanmak için. İnce taneli kullanıcı izinlerine ihtiyacımız var, ör. "A kullanıcısı, B alanını düzenleyebilir" "C kullanıcısı, bir model/kaynak için D alanını görüntüleyebilir."İnce taneli ACL/Kullanıcı izinleri için Hapi ile uyumlu bir kütüphane var mı?

Bir şey oluşturmaya başlamadan önce, böyle bir şeyin Hapi ile uyumlu olup olmadığını görmek için bakıyordum.

+0

Herhangi bir şey buldunuz mu? – srlm

+0

Hayır, bu proje şu anda beklemede. Herhangi bir bulgu üzerine burada geri gönderilecek. – Adamski

cevap

3

Geçtiğimiz günlerde hapijler için bir ACL projesi üzerinde çalışıyorum. İyi bir başlangıç ​​yapmalısın. https://www.npmjs.org/package/hapi-authorization

+0

Eklentiyi kontrol ettim ve bir sorum var - bunu, kullanıcının hiyerarşik olmayan, ancak aynı düzeyde, uygulamanın farklı bölümlerine erişime izin veren birden fazla role sahip olabileceği şekilde uygulayabilir misiniz (diyelim ki, manages_users ve manages_products)? Kullanıcı nesnesinin .role özelliği varsa, tek bir rol oynayabileceğini kabul edersiniz; Eğer .roles varsa, o zaman bir dizi beklersiniz ve bu – zappan

+0

karşı kontrol edin Bu işlev zaten var ve varsayılan. https://github.com/toymachiner62/hapi-authorization#plugin-config. Sorularınız varsa, lütfen SO üzerinde yayınlamak yerine github sorunlarını gönderin. – Catfish

4

ACL izinlerinin yapı kapsamları kullanılarak doğrulandığı bir makaleyi okudum. İşte

belirtilen yazıya link:

{ 
    "username": "han", 
    "scope": ["door-trash-compactor"] 
} 

: https://blog.andyet.com/2015/06/16/harnessing-hapi-scopes/

Ve (yukarıdaki bağlantıdan örneği kullanarak) hızla devam etmek, sen gibi pek görünen bir kullanıcı nesnesini almak Kapsam, bu kullanıcı için ACL'nizi yedekleyen herhangi bir şey tarafından oluşturulabilir. door-{params.door_id} sonra doğrulanır door-trash-compactor çevrilir

server.route({ 
    method: 'GET', 
    route: '/doors/{door_id}', 
    config: { 
     handler: function (request, reply) { 
      reply(request.params.door_id ' door is closed'); 
     }, 
     auth: { 
      scope: ['door-{params.door_id}'] 
     } 
    } 
}); 

kapsamını: Bu durumda şöyle kontrol edilebilir id trash-compactor ile kaynak door var. Han'ın çöp sıkıştırıcı kapısına talebi geçerli olacak ve door is closed mesajını alacak.

Blog yazısı iyi yazılmıştır (daha sonra bu özet daha iyi) ve bunu daha detaylı olarak açıklar - okumayı öneririm.