2012-05-26 13 views
8

Geçenlerde şirketin Active Directory bağlı bildirime güvenlik (server.xml/web.xml) kullanan JSP bir erkek kedi web uygulaması geliştirdi. Yeni doğan projeye JSF desteği eklemem istendi. Giriş formunu jsf'ye dönüştürmek basit bir konuydu ve güvenlik modeli hala işe yaradı. Ben daha geniş bir kitleye rapordan birini görüntülemesine izin, ancak yalnızca küçük bir grup için eylem düğmeleri hale eğer (isUserInRole()), kullanıcı izinlerini/güvenliğini bir JSF düğmesine eklemek için en kolay yol mu?

bir ortak

istedi. JSF'ye yeni olmak, biraz araştırma yapmak zorunda kaldım.

ben "jsf düğme güvenliği" ve "jsf düğme izinleri" ve çoğunlukla öldüğünü biter çeşitli önerileri denedikten gibi şeyler googling yaklaşık dört saat geçirdim. Bir başka ortak, Spring güvenlik modelini kullanmayı önerdi, ancak bunu yapmak için daha kolay bir yol varsa, bir dolu Bahar kütüphaneleriyle uğraşmak istemedim.

Sonunda, ben inanılmaz derecede basitti cevap, tökezledi. Sadece HttpServletRequest yöntemini kullanmam gerekiyordu: isUserInRole(), şu anda oturum açmış kullanıcının işlem düğmelerini görmesine izin verilip verilmediğini belirlemek için. Son on yılda HttpServletRequests LOT kullandım, ama bu yöntemi öğrenmeyi hatırlamıyorum.

public boolean isUserInRole(String role) { 
    return (FacesContext.getCurrentInstance().getExternalContext().isUserInRole(role)); 
} 

Sorularım özellikle şunlardır: jsf ile, aşağıda gösterildiği gibi, bu yönteme almak için basit bir mesele ben farkında olmalı bu yaklaşımı hakkında herhangi bir FRİKİKLERİNDEN vardır ve yapmak için daha kolay bir yolu yoktur o? Eğer MTU uygulamasına bir eklenti olarak Tomahawk kullanırsanız

+2

Bir destek fasulyesine gerek kalmadan EL'de daha da basitleştirilebilir: '# {request.isUserInRole ('foo')}' – BalusC

+0

ancak jsf yönetimli bir fasülyede, isteğinize erişemezsiniz. sağ? –

+0

Nadiren bir arka fasülyede ihtiyacım vardı. Sadece görünümde "rendered", "readonly" veya "disabled" özelliklerini ekleyin. – BalusC

cevap

1

kontrollerin çoğu bir visibleOnUserRole nitelik. Değerde birden çok rol adı kullanabilirsiniz.

+0

Bu gerçekten iyi bir bilgi, gerçekten tomahawk addon hakkında hiçbir şey bilmiyordum, iyi şeyler gibi görünüyor. Bir soru, eğer tomahawk ve primefaces kullanırsam, visibleOnUserRole özniteliğini bir primefac kontrolüne ekleyebilir miyim (örn. P: commandButton)? –

+0

Ben bu bağlantıyla primefaces ve visibleOnUserRole hakkında benim kendi soru yanıtlama: http://cagataycivici.wordpress.com/2010/03/18/primefaces-el-extensions-for-ui-authorization/ –

İlgili konular