2012-02-02 15 views
7

これはColdFusion/mobileの質問です。私はログインページを持つシンプルなWebアプリケーションを持っています。 ユーザーがログイン情報を入力すると、セッション情報が割り当てられ、 プロジェクトページに移動します。これはうまくいきますが、自動ログイン(ユーザー )を設定しようとすると、ホーム画面でユーザー名とパスワードを渡すブックマークがクリックされると、同じプロセスが発生しますが、セッション情報は失われます。 プロジェクトページ。これはBlackBerry 9370(タッチスクリーン付き。 モデルタイプではありません)で発生しますが、ブラウザでテストするときにはうまく動作し、 BlackBerryシミュレータでは正常に動作します。ここでは自動ログインのためのいくつかのコードは次のとおりです。BlackBerry(ColdFusionアプリ)でセッション情報が失われる

<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> 

私は右のセッションVARSを割り当てた後<cflocation>を使用して 問題を引き起こす可能性があること読んで、私はJavaScriptの再直接試しても短い思い付きました。何か案は?

+0

URLにトークンを手動で追加するとどうなるかと思います。 –

答えて

1

これはBBブラウザのバグかもしれませんが、これはかなり不自由なものです(IMOはIE6を使用可能にします)。

テストのために、プロジェクトページにcflocationを削除して代わりにクリック可能なリンクを置くのが現実的ですか?私はちょうどそれがそのように動作するかどうかを見たいと思います。そうであれば、何らかの理由でcflocationが原因でセッションが失われてしまいます。あなたがCF9を使っているので、そうではないはずですが、どちらか一方を証明するのが良いでしょう。

1

Adob​​eは、CF7の後に、<cflocation>タグと同じリクエストでセッション変数を設定する問題を修正しました。これはもはや問題ではありません。

セッションが中断する可能性が高い理由は、BlackBerryがホーム画面のブックマークからブラウザを起動するときに、セッションクッキー(cfid、cftokenまたはjsessionid)を消去してしまうことです。私もiPhoneでこの同じ振る舞いを見てきました.BBもやっている可能性があります。

これは出力シンプルなページ設定、ケースであることを確認(または拒否)するには:手動でURLをキー入力することにより、「通常」の方法あなたのBBでこのページに

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

移動します。ページが初めて読み込まれると、セッションが作成されます(関連するセッションCookieが返されます)。ページをリロードすると、http要求データのダンプにcookieというヘッダ(request.headers.cookie)が表示されます。これには、その上のセッションダンプに表示されるのと同じセッション情報が含まれます。

ホーム画面のブックマークを使用してページを読み込みます。 BBが実際にあなたのセッションのクッキーをクリアしている場合、request.headers.cookieは存在せず、新しいセッション識別子が与えられます。

+0

これはAndroidおよびiPhoneデバイスにも適用されますか? – Whatevo

+0

@ Joshua、ホーム画面から起動したときに、この動作がiPhoneで見られました。私はAndroidでテストしていません。 – jalpino

+0

iPhoneまたはAndroidに問題はありませんでした。また、それ以降のバージョンのBlackBerry OSでは問題もありませんでした。私はそれが7だったと信じていますが、それ以下のものには問題があります。 – Whatevo

1

cflocationの代わりにCFHEADERタグを使用してリダイレクトしてみましたか?例:

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

リダイレクトを有効にするには、これらのタグが必要です。 CFLOCATIONが現在のページ実行を停止する方法を模倣するために最後にCFABORTを追加することもお勧めします。

関連する問題