[ASP .NET] Werkt global variabel als sessie variabel??

Pagina: 1
Acties:

  • dixon
  • Registratie: Januari 2001
  • Laatst online: 01-01 21:15
Hallo,

op het moment dat iemand bekent is op mijn site (bijv. user/pass via cookie) heeft iemand een ID dmv van checklogin. Hierna wordt de glb.user = New CUser(ID_User) geinitialiseerd. De klasse CUser bevat uiteraard alle info over die user.

modGlobal:
code:
1
2
3
4
5
    Structure TYPE_GLOBAL
        Dim user As CUser
    End Structure

    Public Glb As New TYPE_GLOBAL


Op het moment dat iemand anders naar de site toe gaat, is glb.user niet Nothing. Krijgt dus de CUser van iemand anders. Nu voorkom ik dit gewoon door elke keer een CheckLogin te doen met de cookie waardes, maar toch vind ik het raar. Elke pagina die belangrijk is doet zo'n checklogin en set glb.user gelijk aan zijn CUser.

Zoals ik het nu heb gedaan, houd dit in dat er maar 1 glb.user is? Want dat klopt niet, er kunnen rustig meerdere mensen tegelijk op de site inloggen. Ik snap niet helemaal wat hier gebeurt. Word er nou als iemand naar de site connect een nieuwe instantie van Glb aangemaakt?

Ik gebruik nu niet de global.asax. Misschien moet ik dit wel doen en een CUser in een sessie variabele stoppen. Dus dat je krijgt

code:
1
2
3
4
5
        If Session("user") Is Nothing Then ' of If CType(Session("user"), CUser) Is Nothing Then
            'check for cookie
            'CheckLogin()
            'maak(Session("user"))
        End If


Ik heb het net nog zitten controlleren, en het lijkt erop als wanneer er meerdere mensen tegelijk bezig zijn, hij gewoon 1 glb.user heeft en de hele tijd heen en weer schakelt tussen de 2 ingelogde users.

Ik ga ondertussen even verder zoeken in het asp .net boek.

Moet ik nu wel of geen sessie variabele gebruiken?

Wat een onzin..


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 05:53

gorgi_19

Kruimeltjes zijn weer op :9

Moet ik nu wel of geen sessie variabele gebruiken?
Geen, hier hebben ze Role Based Security icm Forms Authentication / Windows Authentication voor uitgevonden.

Zie http://www.dotnetjunkies....spplus/doc/formsauth.aspx

[ Voor 18% gewijzigd door gorgi_19 op 19-05-2004 11:41 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:56
of klik

https://fgheysels.github.io/


Verwijderd

en nu we toch bezig zijn: klik

  • dixon
  • Registratie: Januari 2001
  • Laatst online: 01-01 21:15
Hehe,

thnx, ik ga meteen lezen. Wat is de reden dat ik geen sessie variabelen moet gebruiken?

Ohja, op die codeproject site, wordt gebruik gemaakt van cookies. Ik wil het zo, checkbox voor cookie aan, dan cookie een jaar geldig, checkbox cookie uit, dan ongeveer een kwartier geldig. Nu kan ik wel een cookie van een kwartier maken, maar dat wil ik eigenlijk niet. Vandaar de sessie.

Wat een onzin..


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:56
Je mag wel sessie-variabelen gebruiken, dat heeft niemand toch gezegd?

Het gaat er hier om dat je een eigen systeem wilt maken, terwijl ASP.NET al in een security-systeem (authentication/authorization) voorziet. je kan beter gebruik maken van dat systeem.
Kijk ook eens naar de AuthenticationTicket class ed...

https://fgheysels.github.io/


  • dixon
  • Registratie: Januari 2001
  • Laatst online: 01-01 21:15
Oke, zal ik doen.

Ja, ik vroeg dat van die sessie variabelen omdat ik wel eens hoor dat ze eeevil zijn :)

Maar goed, ander vraagje dan, als ik in een module modGlobal een functie maak die wil checken op Session of Request, dan zegt ie dat kan niet, want die module is natuurlijk geen system.web.page.

Wat ik als oplossing heb gedaan is de pagina die die functie aanroept meesturen als byref naar die functie, dus:
Public Function CheckSession(ByRef objParent As Page) As CUser

en binnen die functie:
objParent.Session("sesUser")

Pak ik nu een andere pagina die functie, is die session weer niks, oftwel die session is aan die pagina gekoppeld. Wat nu?

edit:
Herstel, ik zie net dat ie de sessie variabele op andere pagina's wel pakt. Het rare is alleen dat ie ze maar heel kort onthoud, terwijl de iis op 15 mins staat, en in global.asax heb ik session.timeout = 15 gezet. Ik ga nog even uitproberen. Je leest het zo, of niet :)

[ Voor 19% gewijzigd door dixon op 19-05-2004 12:42 . Reden: foutje ]

Wat een onzin..


  • dixon
  • Registratie: Januari 2001
  • Laatst online: 01-01 21:15
Oke, op zich werkt het goed. Die timeout van 15 minuten klopt. Alleen het lijkt erop dat wanneer je je browser weer afsluit (tijdens debuggen iig) de sessie vars toch weg zijn. Dit zou wel kunnen kloppen.

Ander probleem, op veel plaatsen in mn code maakte ik gebruik van de Glb.user, en die heb ik nu niet meer. Nu moet ik in alle Classes mn objUser aan de functies doorgeven, beetje onhandig, maar het moet zo.

Wat een onzin..

Pagina: 1