2011-11-20 5 views
6

वर्तमान में, मैं दोनों नियंत्रकों और जीएसपी पृष्ठों में डिफ़ॉल्ट HttpSession वस्तु का उपयोग कर रहाएक ग्रेल्स वेब एप्लिकेशन में शिरो देशी सत्र का उपयोग कैसे करें?</p> <p>नियंत्रकों में:</p> <pre><code>... session.mykey = anObject; // adding an object to session ... if (session.otherkey) { // performing some checking </code></pre> <p>GSPs में:

... 
<g:if test="${session.mykey}"> 
... 

मैं एक है "करना चाहते हैं मुझे याद रखें "कार्यक्षमता। शिरो पहले से ही इसमें बनाया गया है। हालांकि, जहां तक ​​मुझे समझ में आया, मुझे इसे शिरो देशी सत्र मोड (Config.groovy: security.shiro.session.mode = "native" में) का उपयोग करना है। डिफ़ॉल्ट रूप से, यह सत्र स्थिति बनी रहती है, इसलिए ऑब्जेक्ट सत्र में तब तक रहेगी जब तक कुकी समाप्त हो जाती है या उपयोगकर्ता लॉग ऑफ हो जाता है।

क्या मेरी समझ सही है? यह करने के लिए

def shiroSession = SecurityUtils.subject.session 
shiroSession.setAttribute("mykey",anObject) 
.... 
if (shiroSession.getAttribute("otherkey")){ 

और मेरे विचार::

तो मैं इस के लिए मेरे नियंत्रकों को बदलने के लिए होगा

<g:if test="${SecurityUtils.subject.session.getAttribute('mykey')}"> 

तो, मेरे सवाल कर रहे हैं:

  • यह सही है ?
  • क्या मैं सत्र तक पहुंचने के लिए पिछले तरीके का उपयोग नहीं कर सकता?
  • क्या मुझे कुछ कॉन्फ़िगरेशन में डिफ़ॉल्ट http सत्र बंद करना है?
+1

आपको "मुझे याद रखें" का उपयोग करने के लिए मूल सत्र की आवश्यकता नहीं है। – user852518

+0

आप क्या सुझाव देते हैं? क्या आप मुझे कुछ लिंक बता सकते हैं? मैंने इस पोस्ट को पढ़ने के बाद मूल सत्र की कोशिश की: http://grails.1312388.n4.nabble.com/Forcing- प्रमाणीकरण-of-user-in-Grails-filter-using-Shiro-tp3698679p3702316.html – r0drigopaes

+0

से: https: //grails.org/plugin/shiro सम्मेलन द्वारा अभिगम नियंत्रण को देखो। आपने '' 'accessUontrol (auth: false)' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' काम करना चाहिए यदि आप याद कर रहे हैं मेरे ध्वज ठीक से। –

उत्तर

1

मैं लगातार सत्र में वस्तुओं रखने (जब तक कुकी समाप्त हो जाएगा) छोड़ दिया।

नियंत्रक में प्रवेश पद्धति में:: यहाँ मैं क्या किया है

if (! session.currentProfile){ 
    Subject currentUser = SecurityUtils.getSubject() 
if (currentUser.isRemembered()){ 
    boolean success = configureSession(session, currentUser.getPrincipal()) 
     if (success){ 
     ... 
     } 
    } 
    .... 
} 

पहले सत्र वस्तु मुझे जरूरत है "अगर" जाँच करता है कि।

कॉन्फ़िगरेशन सत्र विधि सत्र में रखी गई सभी जानकारी जो मुझे चाहिए।

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