मैंने हाल ही में जेएसपी में एक टोमकैट वेब ऐप विकसित किया है जो कंपनी की सक्रिय निर्देशिका से जुड़ी घोषणात्मक सुरक्षा (server.xml/web.xml) का उपयोग करता है। मुझे नवाचारी परियोजना में जेएसएफ समर्थन जोड़ने के लिए कहा गया था। लॉगिन फॉर्म को जेएसएफ में परिवर्तित करना एक आसान मामला था, और सुरक्षा मॉडल अभी भी काम करता था।है (isUserInRole()) किसी जेएसएफ बटन पर उपयोगकर्ता अनुमति/सुरक्षा संलग्न करने का सबसे आसान तरीका है?
एक सहयोगी ने पूछा कि क्या मैं व्यापक दर्शकों को रिपोर्ट में से किसी एक को देखने की अनुमति दे सकता हूं, लेकिन केवल एक छोटे समूह के लिए कार्रवाई बटन प्रस्तुत करता हूं। जेएसएफ के लिए नया होने के नाते, मुझे कुछ शोध करना पड़ा।
मैंने "जेएसएफ बटन सुरक्षा" और "जेएसएफ बटन अनुमतियों" जैसी चार घंटों में गुस्से में बिताए और विभिन्न सुझावों का प्रयास किया जो ज्यादातर मृत समाप्त होते थे। एक और सहयोगी ने स्प्रिंग सुरक्षा मॉडल का उपयोग करने का सुझाव दिया था, लेकिन अगर ऐसा करने का कोई आसान तरीका था तो मैं वसंत पुस्तकालयों के पूरे समूह से निपटना नहीं चाहता था।
आखिरकार, मैंने जवाब पर ठोकर खाई, जो अविश्वसनीय रूप से सरल था। मुझे केवल यह निर्धारित करने के लिए HttpServletRequest विधि: isUserInRole() का उपयोग करने की आवश्यकता है कि वर्तमान में लॉग ऑन उपयोगकर्ता को एक्शन बटन देखने की अनुमति है या नहीं। मैंने पिछले दस वर्षों में HttpServletRequests का उपयोग किया है, लेकिन मुझे उस विधि के बारे में कभी भी याद नहीं है।
public boolean isUserInRole(String role) {
return (FacesContext.getCurrentInstance().getExternalContext().isUserInRole(role));
}
मेरे सवालों का विशेष रूप से कर रहे हैं:: JSF के साथ, यह है कि विधि को पाने के लिए एक सरल बात है, जैसा कि नीचे दिखाया है वहाँ इस दृष्टिकोण मैं के बारे में पता होना चाहिए के बारे में किसी भी gotchas हैं, और ऐसा करने के लिए एक और आसान तरीका है यह?
इसे बैकिंग बीन की आवश्यकता के बिना ईएल में भी आसान किया जा सकता है: '# {request.isUserInRole ('foo')}' – BalusC
लेकिन एक जेएसएफ प्रबंधित बीन में, आपको अनुरोध तक पहुंच नहीं होगी, सही? –
मुझे बैकिंग बीन में शायद ही कभी इसकी आवश्यकता है। इसे दृश्य में 'rendered', 'readonly' या' अक्षम 'विशेषताओं पर रखें। – BalusC