Zurück   Flashforum > Flash und Server > Coldfusion und J2EE

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-11-2007, 10:17   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 106
Unhappy Probleme mit <cflogin> und Session.

Hallo,
ich habe hier ein unschönes Problem mit cflogin und Session Vars.
Wenn ich meine Seite öffne (es gibt keinen Content ohne Login) erscheint mein Login-Formular, ich gebe meine Daten ein und werde eingeloggt.
Während dem Login-Vorgang werden einige User-Infos in die Session geschrieben. Soweit funktioniert das auch.

Wenn ich aber nach dem Login den Browser schliesse und ihn neu öffne, kommt nach dem Login eine Fehlermeldung, da offensichtlich keine Session Vars gesetzt wurden.

Momentan fange ich diesen Fehler mit onError ab, setze einen cflogout und danach ein cflocation auf die Startseite. Nun wird wieder das Login Formular angezeigt und ich kann mich wie gehabt einloggen.

Wenn ich nach dem Login über einen Link auslogge und dann neu einlogge klappt es auf Anhieb. Es crashed nur, wenn ich den Browser schliesse und neu öffne.

Im CFAdmin sind J2EE Sessions aktiviert, so dass Sessions gekillt werden, sobald der Browser geschlossen wird. Die Seite läuft auf CF8.

Hier mal meine Application.cfc:
PHP-Code:
<cfcomponent output="false">
  <!--- 
Application SettingsSessionScript Protection etc.--->
      <
cfset this.name "Intranet">
      <
cfset this.loginstorage="session">
      <
cfset this.sessionManagement true>
      <
cfset this.scriptProtect true>
      <
cfset this.setClientCookies true>
      <
cfset this.setDomainCookies true>
      <
cfset this.sessionTimeOut CreateTimeSpan(0,1,0,0)>
      <
cfset this.applicationTimeOut CreateTimeSpan(2,0,0,0)>
      <
cfset this.Path ExpandPath("*.*")>
      <
cfset this.Directory GetDirectoryFromPath(thisPath)> 
          
  <!--- 
Application starts --->
  <
cffunction name="onApplicationStart" access="public" returntype="any" output="yes">
      <
cfquery name="application.mitarbeiter" datasource="intranet">
      
SELECT FROM users
    
</cfquery>
    <
cfquery name="application.news" datasource="intranet" maxrows="2">
    
SELECT FROM aktuelles ORDER BY id DESC
    
</cfquery>
    <
cfquery name="application.accounts" datasource="intranet">
    
SELECT FROM accounts
    
</cfquery>
    <
cfquery name="application.kontakte" datasource="intranet">
    
SELECT FROM kontakte ORDER BY typefirmaname
    
</cfquery>
    <
cfquery name="application.marken" datasource="intranet">
    
SELECT FROM marken ORDER BY seit DESC
    
</cfquery>
  </
cffunction>
  

<!--- 
Request starts --->
  <
cffunction name="onRequestStart" returntype="any" access="public" output="false">
   <
cfif structKeyExists(url,"logout")>
 <
cflogout>
</
cfif>

<
cflogin>
   <
cfif NOT IsDefined("cflogin")>
   <
cfset structclear(session)>
          <
cfinclude template="login.cfm">
          <
cfabort>
   <
cfelse>
      <
cfset theusername=trim(form.j_username)>
      <
cfset thepassword=trim(form.j_password)>
      <
cfquery name="auth" datasource="intranet">
      
SELECT FROM users WHERE samaccountname='#theusername#' AND password='#thepassword#'
      
</cfquery>
              <
cfif auth.recordcount gt 0>
            <
cfset session structnew()>
            <
cfset session.vorname auth.givenname>
              <
cfset session.name auth.sn>
              <
cfset session.abteilung auth.department>
              <
cfset session.tel auth.telephonenumber>
              <
cfset session.mail auth.mail>
              <
cfset session.titel auth.title>
              <
cfset session.standort auth.physicalDeliveryOfficeName>
              <
cfset session.geburtsdatum lsdateformat(auth.description,"dd. mmmm yyyy")>
              <
cfif #auth.mobile# NEQ "">
              
<cfset session.handy auth.mobile>
              </
cfif>
          <
cfset session.initials auth.initials>
              <
cfset roles ="user">

      <
cfloginuser name="#theusername#" password="#thepassword#" roles="#roles#">
      <
cfset session.start=Dateformat(now(),"yyyy-mm-dd HH:mm:ss")>
      <
cfquery name="init" datasource="intranet">
   
INSERT INTO logfiles (sessionid,start,initials,pagesVALUES ('#session.sessionid#','#session.start#','#session.initials#',"LOGIN")
   </
cfquery>
        <
cfelse>
        <
cfinclude template="login.cfm">
        <
cfabort>
</
cfif></cfif>
</
cflogin>

      </
cffunction>
      <!--- 
Request ends --->
<
cffunction name="onRequestEnd" access="public" output="yes">

<
cfquery name="pages" datasource="intranet">
SELECT pages FROM logfiles WHERE sessionid='#session.sessionid#'
</cfquery>
<
cfset uppages pages.pages&","&replace(CGI.SCRIPT_NAME,"/","","ALL")>
<
cfquery name="log" datasource="intranet">
UPDATE logfiles SET pages='#uppages#' WHERE sessionid='#session.sessionid#'
</cfquery>
</
cffunction>
<!--- 
Session ends --->
<
cffunction name="onSessionEnd" returntype="any" access="public">
<
cflogout>
</
cffunction>
    <!--- 
This should never happen...  --->
       <
cffunction name="onError" output="no">
    <
cfargument name="Exception" required=true/>
    <
cfargument type="String" name="EventName" required="true"/>
            <
cfif Find("Element VORNAME is undefined in SESSION.",Arguments.Exception.Message,0)> <!--- Die unschöne Lösung ---> 
             <
cflogout>
            <
cflocation addtoken="no" url="index.cfm">
            <
cfelse>
           <
cfmail charset="utf-8" from="intranet@company.com" subject="Intranet Fehlermeldung" to="admin@company.com" type="html">
    <
p style="font-family:Verdana;"><strong>The server made a boo boo! ;)</strong></p>
    <
cfdump var="#Arguments#">
    </
cfmail>
   </
cfif>
    </
cffunction
  
</
cfcomponent
Die Datenbankfelder sind nach den entsprechenden ActiveDirectory Feldern benannt, da später eine Authentifizierung über LDAP erfolgen soll.

Geändert von Slashwalker (14-11-2007 um 10:19 Uhr) Grund: Ergänzende Infos
Slashwalker ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 20:51 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele