2016-05-05 8 views
1

Das ist peinlich. Ich bin seit 13 Jahren ColdFusion-Entwickler und hatte nie einen Grund, die Clientverwaltung über das Sitzungsmanagement zu verwenden. Wie auch immer, ich habe eine Datenbank und eine Datenquelle in CFAdmin eingerichtet und dann diese Datenquelle als Standardspeichermechanismus für Clientsitzungen ausgewählt.Fehler beim Wechsel zur Client-Verwaltung

Dann ging ich meinen ganzen Code und global-ersetzt alle meine Sitzung Bereiche mit Clients Bereich.

Top meiner application.cfm wie folgt aussieht:

<CFAPPLICATION 
    NAME="blah" 
    SESSIONMANAGEMENT="No" 
    SESSIONTIMEOUT=#CreateTimeSpan(0,2,0,0)# 
    CLIENTMANAGEMENT="Yes" 
    CLIENTSTORAGE="sys_blah" 
> 

In meinem application.cfm hatte ich vorher ein paar Variablen global auf Sitzungsauthentifizierung bezogen, dh

<cfparam name="session.user.authenticated" default="0"> 
<cfparam name="session.user.id" default=""> 

Doch jetzt dass diese als

<cfparam name="client.user.authenticated" default="0"> 
<cfparam name="client.user.id" default=""> 

geschrieben bekomme ich einen Fehler:

Element USER is undefined in CLIENT.

Was könnte ich falsch machen?

Ich kann die Client-Vars in die neu erstellte Datenbank gehen. Ich bin auf CF12

+1

'

+0

Hochachtungsvoll, ich stimme nicht zu. Sie sagten nicht, dass sie nicht wissen, wie cfdump oder dass sie es nicht ausprobiert haben ;-) Wir alle werden gelegentlich von kleinen Sachen übermannt, trotz jahrelanger Erfahrung.Manchmal braucht man nur einen kleinen Ruck oder einen zweiten Satz Augen, um dich wieder auf die Spur zu bringen. Besonders für diejenigen, die alleine arbeiten Das Problem könnte darin bestehen, dass CF den Schlüsselnamen als 'user.id' behandelt und nicht als eine Struktur namens' user', mit einem Schlüssel namens id. Das bringt uns natürlich wieder zu Dans erstem Punkt Ich stimme zu :) Sie sollten "cfdump" verwenden, um diese Theorie zu bestätigen oder zu widerlegen. – Leigh

Antwort

3

Client variables must be simple data types: strings, numbers, lists, Booleans, or date and time values. They cannot be arrays, recordsets, XML objects, query objects, or other objects. If you must store a complex data type as a client variable, you can use the cfwddx tag to convert the data to WDDX format (which is represented as a string), store the WDDX data, and use the cfwddx tag to convert the data back when you read it. For more information on using WDDX, see Using WDDX.

http://help.adobe.com/en_US/ColdFusion/10.0/Developing/WSc3ff6d0ea77859461172e0811cbec0c35c-7fd5.html

So ... WDDX oder JSON funktionieren würde.

+0

Es sollte in diesem Fall kein Problem sein. IIRC, CF behandelt "user.id" als Schlüsselname, dh Zeichenfolge, und nicht eine Struktur, also sind sowohl der Schlüsselname als auch der Wert si mple Objekte. – Leigh

+0

wirklich? dann kann er vielleicht 'client [" user.authenticated "]' versuchen. Ich habe noch nie Client-Speicher verwendet. Die von ihm gepostete Fehlermeldung scheint, dass CF nach einem 'user' Objekt aus dem' client' Bereich sucht. – Henry

+0

Ehrlich gesagt, ich habe sie schon lange nicht mehr benutzt, aber das ist meine Erinnerung. Wäre dieser Thread nicht aufgetaucht, hätte ich ihn wahrscheinlich nicht mehr (oder nicht) nach einer langen Zeit mit Session-Variablen gespeichert ;-) – Leigh