Bir uygulama geliştiriyoruz (Grails Spring Security (eski Acegi) kullanarak), 10-15 farklı kullanıcı türünü kapsayan binlerce kullanıcımız olacak. Geçerli sistemde, her kullanıcı tipi bir "grup" a eşittir ve belirli roller ve izinler gruba bağlanır. Kullanıcı tüm "rollerini" grubundan alır. rolleri = do_flip, walk_tightrope, Biz üç kullanıcıları, bir atanmışSpring Security (Acegi) ve kullanıcı Grupları (Roller gibi)
receive_applause: AKROBAT receive_applause, roller = ride_clown_car, toot_horn:
PALYAÇO:
Örneğin, iki kullanıcı grubuna sahip olabilir ACROBAT grubuna atanan ve her ikisine birden atanan CLOWN grubu (CLOWN ve ACROBAT rolleri birleşimine sahiptir).
İzinleri değiştirirsek, bunu grup düzeyinde yaparız. Örneğin, ACROBAT grubuna bir swing_on_trapeze iznini eklersek, tüm akrobatlar otomatik olarak devralır.
Grails terimlerinde, denetleyicilerin izinleri hala rol düzeyinde olacaktır. Dolayısıyla, @Secured (['toot_horn']) ile bir eylem CLOWN grubundaki kullanıcılara izin verir, ancak ACROBAT grubunda bulunmaz. @Secured (['rece_applause']), CLOWNS ve ACROBATS'a izin verir.
Bunu, Spring Güvenlik'te, modelin iki aşamalı yapısı (kullanıcı, rol) göz önünde bulundurarak nasıl yapabilirim? Gruplara dayalı rolleri toplamak için kendi özel kimlik doğrulamayı uygulamam gerekir mi?
Teşekkürler!
: Zaten bir uygulama tanımlı getAuthorities yöntemine bağlıdır beri
yüzden sadece Kullanıcı sınıfında böyle bir şey kullanmak, Bahar Güvenlik çekirdek eklentisi için gerekli yapılandırma yok seninkilere çok benziyor. Davanıza "grails.plugin.springsecurity.userLookup.authorityJoinClassName" nasıl ayarlanıyor? İki seviyeli bir sistemde, bu sadece asıl rolleri/yetkilileri tanımlayan birinci seviyeye (kullanıcı grubu) işaret edebilir. – sola