7
votes

Info de session perdue sur BlackBerry (ColdFusion App)

Ceci est une question de froid / mobile. J'ai une application Web simple avec une page de connexion. Types d'utilisateurs leurs informations de connexion, les informations de session sont attribuées et elles sont conduites à un Page Projets. Cela fonctionne bien, mais quand j'essaie de configurer un auto-connexion (utilisateur clique sur un signet sur leur écran d'accueil qui transmet un nom d'utilisateur et un mot de passe), le même processus devrait se produire, mais les informations de session sont perdues une fois qu'ils sont prises à la page Projets. Cela se produit sur le BlackBerry 9370 (W / Touch Screen. Pas sûr du type de modèle), mais fonctionne bien lorsque vous le testez dans un navigateur et le Simulateur BlackBerry. Voici quelques codes pour la connexion automatique:

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


1 commentaires

Je me demande ce qui se passerait si vous appendez manuellement les jetons à l'URL.


3 Réponses :


1
votes

Je ne peux pas m'empêcher de penser que cela peut être un bug dans le navigateur BB, qui est assez boiteux pour commencer (imo cela fait que IE6 ait l'air utilisable).

Pour des raisons de test, est-il pratique de supprimer la cflocation à la page de projets et de mettre un lien cliquable là-bas à la place? J'aimerais juste voir si cela fonctionne de cette façon. Si cela le fait, alors pour une raison quelconque, la cflocation provoque la perte de la session. Cela ne devrait pas être le cas puisque vous êtes sur CF9, mais ce serait bien de prouver d'une manière ou d'une autre.


0 commentaires

1
votes

Après CF7, Adobe corrige le problème des variables de session de configuration dans la même demande que l'étiquette . Ce n'est plus un problème.

La cause probable de votre séance d'abandon est que BlackBerry élimine vos cookies de session (CFID, CFTOGN ou JSessionIDE) lorsqu'il lance le navigateur à partir d'un signet à l'écran d'accueil. J'ai vu ce même comportement dans l'iPhone également, il est possible que BB le fait aussi.

confirmer (ou refuser) que c'est le cas, configurez une page simple qui sortira: xxx

naviguer sur cette page sur votre BB le «Normal» de manière en saisissant manuellement l'URL. La première fois que la page se charge, elle créera une session (et renvoyera le ou les cookies de session associés). Recharger la page et vous verrez dans la Démarrage de données HTTP, un en-tête appelé cookie ( demande.beers.cookie ). Cela contiendra les mêmes informations de session que vous voyez dans la décharge de session au-dessus de celle-ci.

MAINTENANT, utilisez le signet à l'écran d'accueil pour charger la page. Si BB EST En effet, vous éliminez vos sessions cookies, alors le request.pels.cookie.cookie ne sera pas présent et de nouveaux identificateurs de session seront donnés.


3 commentaires

Cela s'appliquerait-il également aux périphériques Android et iPhone?


@Joshua, nous avons vu ce comportement sur les iPhones lors du lancement de l'écran d'accueil. Je n'ai pas testé sur Android.


N'a pas eu de problème sur iPhone ou Android. N'avez pas non plus de problème sur une version ultérieure du BlackBerry OS. Je crois que c'était 7, mais tout ce qui est ci-dessous eu des problèmes.



1
votes

Avez-vous déjà essayé d'utiliser des étiquettes CFHECTER pour rediriger au lieu de la cflocation? Exemple: xxx

Vous avez besoin de ces deux tags afin que la redirection fonctionne. Je suggère également d'ajouter un CFABort à la fin pour imiter la manière dont la cflocation arrête également l'exécution de la page en cours.


0 commentaires