मैं स्नैप सत्र का उपयोग करने के तरीके के बारे में एक उदाहरण के लिए चारों ओर घूम रहा हूं। कुछ भी दूर नहीं है। क्या कोई मुझे कुकी आधारित सत्र के एक साधारण उदाहरण के साथ किसी लेख या कुछ को इंगित कर सकता है?हास्केल स्नैप: सत्र उदाहरण
एक कोड स्निपेट बहुत सराहना की जाएगी। सत्र में उपयोगकर्ता नाम डालने और प्रत्येक अनुरोध से पहले इसके अस्तित्व और वैधता की जांच करने की तरह कुछ। मैंने Snap.extension.session पर देखा लेकिन मैं अब भी लाइब्रेरी कोड से इसका उपयोग करने के तरीके को समझने के लिए बहुत कुछ नहीं हूं।
मैं समझता हूँ कि setInSession समारोह कुकी में सत्र मूल्य डाल करने के लिए है, लेकिन मैं काफी कैसे हस्ताक्षर से इसका इस्तेमाल करने की समझ सकते:
setInSession k v = Map.insert k v `liftM` getSession >>= setSession
या कैसे एक साथ पूरी बात ग्लू के लिए।
मुझे नहीं पता कि यह नियम उदाहरण के लिए पूछने के नियमों के खिलाफ है, लेकिन अगर मैं नेट पर कुछ भी पा सकता हूं तो मैं ऐसा नहीं करूँगा।
अग्रिम धन्यवाद।
--- अद्यतन ---
मैं नीचे दिए गए उदाहरण का पालन किया और लिंक लेकिन चीजें अभी भी सही बाहर आ रहा नहीं कर रहे हैं।
मैं सिर्फ एक सरल परीक्षण चाहता हूं जो एक कुंजी और मूल्य पढ़ता है और इसे सत्र कुकी में रखता है, तो मैं सत्र मूल्य को वापस और प्रदर्शित करना चाहता हूं।
इसलिए मैंने अपना सत्र शुरू किया और इसे मुख्य एप्लिकेशन स्थिति में रखा।
s <- nestSnaplet "" sess $ initCookieSessionManager "config/site_key.txt" "sess" (Just 3600)
पहला भ्रम कुंजी है कि सत्र प्रारंभिक प्रशंसा की आवश्यकता है। कुंजी प्रारंभिक प्रोजेक्ट सेटअप के दौरान नहीं बनाई गई है।
तो मैं इसे कैसे बना सकता हूं? प्रोजेक्ट फ़ाइल संरचना में जाने की कुंजी कहां है, तो फ़ंक्शन इसे ढूंढ सकता है?
तो संचालकों:
putCookie :: Handler App App()
putCookie = do
par <- getPostParams
let k = T.decodeUtf8 $ head (par ! (B.pack "key"))
let v = T.decodeUtf8 $ head (par ! (B.pack "value"))
with sess $ setInSession k v
heistLocal (bindString "message" "Cookie inserted!") $ render "reply"
यह एक बस कुंजी और एक वेब फार्म से मूल्य पढ़कर उस पर कुकी में महत्वपूर्ण मूल्य जोड़ी डाल करने के लिए माना जाता है। खैर, जाहिर है यह नहीं है।
shCookie :: Handler App App()
shCookie = do
v <- with sess $ getFromSession "key"
heistLocal (bindString "message" (fromMaybe "" v)) $ render "reply"
यह सिर्फ इसे वापस पढ़ता है और प्रदर्शित करता है। मुझे हमेशा एक खाली स्ट्रिंग मिलती है जिसका मतलब है कि ऐसी कोई चीज़ नहीं है।
क्या इनमें से कोई भी गलत दिखता है? मैं गलती कहां करूं? यह सब सही संकलित करता है लेकिन सत्र कुकी बस वहां नहीं है।
उदाहरण के लिए धन्यवाद। मैंने आपके लिंक का पालन किया लेकिन चीजें अभी भी किसी कारण से काम नहीं करतीं। मैं अपने मूल प्रश्न को कुछ और भ्रम बिंदुओं के साथ अपडेट कर दूंगा। –
अद्यतन उत्तर – Yuras
अच्छा देखें। अब सब कुछ काम करता है। जैसा कि आपने सुझाव दिया था, मुझे केवल प्रतिबद्धता जोड़ने की ज़रूरत थी। धन्यवाद। बड़ी मदद। –