Bir kullanıcı rolünün bir eylemi gerçekleştirmesini engellemek için.isUserInRole (rol) doğru olarak nasıl kullanılır?
- Örnek 1: Rol "yönetici" eylemi imha gerçekleştirmek için izin verilen tek rolüdür.
- Örnek 2: "Misafir" ten farklı olan herhangi bir rol CREATE eylemi gerçekleştirebilir.
public String delete() { if(FacesContext.getCurrentInstance().getExternalContext().isUserInRole("administrator"){ //.....the action to perform } return "Denied"; }
Ben henüz ben EJB ama ManagedBeans kullanmıyorum ek açıklama EJB
@RolesAllowed()
kullanmak isterdim: Gerçek bir durumda
, bende bu var. Yani soru şu: Bir çok rolleri aynı anda kullanmanın bir yolu var mı? Bazı geçici çözüm! Örnek: Bir eylemin 3 role izin vermesi gerekiyorsa (yönetici, yönetici, yönetici). Yapmak zorunda olduğum: Ve tüm yöntemleri yeniden üretmek bir acıdır.
public class AuthorizationUtils {
public static boolean isUserInRoles(String[] roles) {
for (String role : roles) {
if (FacesContext........isUserInRole(role)) {
return true;
}
}
return false;
}
}
Ve sonra onu çağırmak: yöntemlerden :(yüzlerce gibi bir şey
akıllı uygulama! çok sinir bozucu ti DENETEDİLDİĞİNİ mesajı aldım.YENİ yönetici ve benzeriyse ADMIN panelini görüntülemek için rendered özniteliğini zaten kullanıyorum.Görme yapmak, elbette bahsettiğiniz avantajlara sahiptir, fakat sorun devam etmektedir: her rol ayrı kullanım veya operatör! Ben yanlış mıyım? – Hanynowsky
En az daha özlü '# {facesContext.externalContext.isUserInRole ('yönetici')}' :) Aynı durum birden fazla kez aynı tekrarlamak gerekirse görünüm, sonra da bir takma ad vermek için '' kullanabilirsiniz. Ayrıca güncellenmiş cevaba bakınız. –
BalusC
Teşekkürler BalusC! Yeni rolleri tanımlamak ve manged bean'daki eylem yöntemlerini kesmekten kaçınmak için ana şablonu ui: param ile kullanmak akıllıca olacaktır. Şimdi benim için iyi çalışıyor, Tek yapmam gereken, görünüşte ihtiyaç duyulan yeni rol takma adlarını uygulamak. @Bozho yöntemi, izin verilmeyen sayfayı gerçekten yetkilendirilmemiş kullanıcıya göstermek istiyorsa, benim için de iyi çalışıyor. – Hanynowsky