2012-02-02 18 views
7

यह एक कोल्डफ्यूजन/मोबाइल प्रश्न है। मेरे पास लॉगिन पेज वाला एक सरल वेब ऐप है। उपयोगकर्ता अपनी लॉगिन जानकारी टाइप करता है, सत्र जानकारी असाइन की जाती है, और उन्हें प्रोजेक्ट पेज पर ले जाया जाता है। यह ठीक काम करता है, लेकिन जब मैं एक ऑटो-लॉगिन सेट करने का प्रयास करता हूं (उपयोगकर्ता उपयोगकर्ता नाम और पासवर्ड पास करने वाली होम स्क्रीन पर एक बुकमार्क पर क्लिक करता है), समान प्रक्रिया होनी चाहिए, लेकिन सत्र जानकारी खो जाने के बाद खो जाती है प्रोजेक्ट पेज । यह ब्लैकबेरी 9 370 (डब्ल्यू/टच स्क्रीन पर नहीं है। मॉडल प्रकार के बारे में सुनिश्चित नहीं है), लेकिन ब्राउज़र में इसका परीक्षण करते समय ठीक है और ब्लैकबेरी सिम्युलेटर। यहाँ ऑटो लॉगिन करने के लिए कुछ कोड है:ब्लैकबेरी (कोल्डफ्यूजन ऐप) पर सत्र की जानकारी खो गई

<cfquery name="qryAccount"> 
    EXEC m_AccountLogin 
      @Username = <cfqueryparam value="#LCase(url.u)#" cfsqltype="cf_sql_varchar">, 
      @Password = <cfqueryparam value="#LCase(url.p)#" cfsqltype="cf_sql_varchar">; 
</cfquery> 

<cfif qryAccount.recordcount> 
    <cflock name="lockAccount" type="exclusive" timeout="10"> 
     <cfset session.account = { 
       isLoggedIn = true, 
       MemberID = qryAccount.iMemberID, 
       Role  = qryAccount.iRole }> 
    </cflock> 

    <cflocation url="/mobile/home/projects.cfm" addtoken="true"> 
<cfelse> 
    <cflocation url="/mobile/index.cfm" addtoken="true"> 
</cfif> 

मैंने पढ़ा है कि <cflocation> का उपयोग कर सही सत्र वार्स बताए के बाद एक मुद्दा कारण हो सकता है, तो मैं एक जावास्क्रिप्ट फिर से सीधा करने की कोशिश की है और अभी भी कम आया। कोई विचार?

+0

मुझे आश्चर्य है कि क्या होगा यदि आप यूआरएल में टोकन मैन्युअल रूप से जोड़ देंगे। –

उत्तर

1

मैं मदद नहीं कर सकता लेकिन लगता है कि यह बीबी ब्राउज़र में एक बग हो सकता है, जो शुरू करने के लिए बहुत लंगड़ा है (आईएमओ यह आईई 6 उपयोग करने योग्य बनाता है)।

परीक्षण के लिए, क्या यह परियोजना पृष्ठ पर सीएफएलओशन को हटाने और इसके बजाय एक क्लिक करने योग्य लिंक डालने के लिए व्यावहारिक है? मैं बस देखना चाहता हूं कि यह इस तरह से काम करता है या नहीं। यदि ऐसा होता है, तो किसी कारण से, सीएफएलोकेशन सत्र को खोने का कारण बन रहा है। सीएफ 9 पर होने के बाद से यह मामला नहीं होना चाहिए, लेकिन यह एक तरह से साबित करना अच्छा होगा।

1

सीएफ 7 के बाद, एडोब ने <cflocation> टैग के समान अनुरोध में सत्र चर सेट करने का मुद्दा तय किया। यह अब कोई मुद्दा नहीं है।

आपके सत्र में गिरावट का संभावित कारण यह है कि ब्लैकबेरी आपके सत्र कुकीज़ (सीएफआईडी, सीएफटीकेन या जेएसएशनिड) को साफ़ कर रहा है जब यह ब्राउज़र को होम स्क्रीन बुकमार्क से लॉन्च करता है। मैंने आईफोन में भी यही व्यवहार देखा है, यह संभव है कि बीबी भी ऐसा कर रहा है।

पुष्टि करने के लिए (या इनकार करते हैं) है कि यह मामला है, एक साधारण पृष्ठ है कि आउटपुट की स्थापना: अपने बी बी पर इस पृष्ठ पर

<cfdump var="#session#"> 
<cfdump var="#getHttpRequestData()#"> 

नेविगेट मैन्युअल URL में कुंजीयन द्वारा "सामान्य" जिस तरह से। पृष्ठ लोड होने पर पहली बार, यह एक सत्र बनाएगा (और संबंधित सत्र कुकी को वापस भेज देगा)। पृष्ठ को दोबारा लोड करें और आप http अनुरोध डेटा डंप में देखेंगे, जिसे कुकी कहा जाता है (request.headers.cookie)। इसमें वही सत्र जानकारी होगी जो आप उपरोक्त सत्र डंप में देखते हैं।

अब, पृष्ठ को लोड करने के लिए होम स्क्रीन बुकमार्क का उपयोग करें। यदि बीबी वास्तव में आपकी सत्र कुकीज़ साफ़ कर रहा है, तो request.headers.cookie वहां नहीं होगा और नए सत्र पहचानकर्ता दिए जाएंगे।

+0

क्या यह एंड्रॉइड और आईफोन उपकरणों पर भी लागू होगा? – Whatevo

+0

@ जोशुआ, हमने होम स्क्रीन से लॉन्च करते समय iPhones पर यह व्यवहार देखा है। मैंने एंड्रॉइड पर परीक्षण नहीं किया है। – jalpino

+0

आईफोन या एंड्रॉइड पर कोई समस्या नहीं थी।ब्लैकबेरी ओएस के बाद के संस्करण पर भी कोई समस्या नहीं थी। मेरा मानना ​​है कि यह 7 था, लेकिन नीचे कुछ भी समस्याएं थीं। – Whatevo

1

क्या आपने पहले ही सीएफएचएडर टैग का उपयोग सीएफएलओशन के बजाय रीडायरेक्ट करने का प्रयास किया है? उदाहरण:

<CFHEADER STATUSCODE="302" STATUSTEXT="Object Temporarily Moved"> 
<CFHEADER NAME="location" VALUE="/mobile/home/projects.cfm"> 

रीडायरेक्ट के काम करने के लिए आपको उन दोनों टैग की आवश्यकता है। मैं इस बात की नकल करने के लिए अंत में एक CFABORT जोड़ना भी सुझाव देता हूं कि CFLOCATION भी वर्तमान पृष्ठ निष्पादन को रोकता है।

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