2010-12-29 10 views
11

के साथ एप्लिकेशन मैंने एक कस्टम क्षेत्र का उपयोग कर ग्लासफ़िश 3 सर्वर पर अपने जेएसएफ 2.0 एप्लिकेशन में एक फॉर्म आधारित लॉग कॉन्फ़िगर किया है। लॉग इन उपयोगकर्ता के बारे में जानकारी प्राप्त करने का सबसे आसान तरीका क्या है, यानी उपयोगकर्ता का नाम।उपयोगकर्ता में लॉग इन करने के लिए कैसे करें, जेएसएफ 2.0 फॉर्म आधारित सुरक्षा

क्या यह संभव है? या वर्तमान सत्र सिर्फ सुरक्षा भूमिका से जुड़ा हुआ है? यदि हां, तो लॉग इन कॉन्फ़िगरेशन को बदले बिना इसे संभव बनाने का कोई तरीका है?

उपयोगकर्ता नाम के रूप में प्रवेश

मेरी वेबपेजों पर

:

सीधे शब्दों में कहें, जो मैं चाहता की तरह एक सरल संदेश प्रदर्शित करने के लिए है।

उत्तर

18

सबसे आसान तरीका है JSF 2.0 में ईएल (अभिव्यक्ति भाषा) के माध्यम से उपयोगकर्ता के प्रवेश पर प्राप्त करने के लिए होगा:

#{request.remoteUser} 

Tobbe का जवाब अच्छी तरह से काम एक समर्थन सेम के भीतर से दूरस्थ उपयोगकर्ता पर प्राप्त करने के लिए होगा।

11

सरल (शायद नहीं सबसे अच्छा) जवाब था:

FacesContext.getCurrentInstance().getExternalContext().getRemoteUser() 

मैं कितनी देर तक यह मुझे ले गया कि यह पता लगाने की के बारे में हैरान हूँ।

0

आपके लॉगिनमेनगेडियन कक्षा में एक वर्तमान उपयोगकर्ता परिभाषित करता है और इसे प्राप्त करने में: मैंने सिस्टम में बाहरी लॉगिंग का उपयोग नहीं किया और यह मेरे लिए काम करता है।

public Login getCurrentUser() { 
    FacesContext fc = FacesContext.getCurrentInstance(); 
    ExternalContext externalContext = fc.getExternalContext(); 
    if (externalContext.getUserPrincipal() == null){ 
     logger.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!current principal is null"); 
    } 
    else{ 
     Integer id = Integer.parseInt(externalContext.getUserPrincipal().getName()); 
     logger.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!LOGGED USER "+ id); 
     try { 
      currentUser = getLoginService().getLoginById(id); 
     } 
     catch (Exception ex) { 
     } 
    } 
    return currentUser; 
} 
+0

यह लाइन क्या है? 'इंटीजर आईडी = Integer.parseInt (बाहरीContext.getUser प्रिंसिपल()। GetName());' आप नाम को int के रूप में पार्स करने का प्रयास कर रहे हैं? –

0

फेसलेट के अंदर आप #{request.userPrincipal.name} का उपयोग कर सकते हैं।

संबंधित मुद्दे