Jag har försökt leta men jag hittar inget sätt att kolla om min Session["kundid"] finns, dvs om kunden är inloggad.
Kan man kolla om just den sessionen finns?
9 svar · 328 visningar · startad av skyman
Jag har försökt leta men jag hittar inget sätt att kolla om min Session["kundid"] finns, dvs om kunden är inloggad.
Kan man kolla om just den sessionen finns?
Skulle vara intressant om det fanns ett sätt att hitta andra sessioner på, men jag har inte lyckats göra detta på.
Men för att lösa ditt problem så kan du ju spara loggin informationen på ett annat ställe. Lämpligtvis i cookies. Tror även att det kan gå om du ändrar din session model från inprocess till sql. Men absolut lättast är väl att spara en bool om dom är inloggad eller inte i cookies.
Det är så att jag lägger en klass i session som "transporterar" informationen mellan sidorna så jag vill helt enkelt bara kolla om denna finns annars gör jag en response.redirect tillbaka till förstasidan.
Det går alltså inte att kolla om just den sessionen finns?
Du menar alltså om användaren öppnar ett nytt fönster och loggar in så vill du använda samma session för det fönster och det andra?
Tror inte detta funkar (letat lite men ej hittat någe sätt) men det borde funka om du använder dig av SQL server som din sessionstate.
lite inklistrat från quickstarten..
By default, ASP.NET will store the session state in the same process that processes the request, just as ASP does. Additionally, ASP.NET can store session data in an external process, which can even reside on another machine. To enable this feature:
Start the ASP.NET state service, either using the Services snap-in or by executing "net start aspnet_state" on the command line. The state service will by default listen on port 42424. To change the port, modify the registry key for the service: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\Port
Set the mode attribute of the <sessionState> section to "StateServer".
Configure the stateConnectionString attribute with the values of the machine on which you started aspnet_state.
The following sample assumes that the state service is running on the same machine as the Web server ("localhost") and uses the default port (42424):
<sessionState
mode="StateServer"
stateConnectionString="tcpip=localhost:42424"
/>
Note that if you try the sample above with this setting, you can reset the Web server (enter iisreset on the command line) and the session state value will persist.
Using Client-Side Cookies
Det är det bästa jag kan komma på. Eller så sparar du själv undan allt du behöver till användaren i en db och håller bara en cookie som säger vem han är.
Är ett omständigt sätt, så hoppas att någon kommer på hur man kan komma åt andra session objekt
Det jag skrev i mitt första inlägg var bara taget ur luften, det handlar inte om en inloggning, bara en koll om den klassen i sessions finns.
Jag får väl vänta och se om någon kommer på något.
Är jag helt ute och cyklar nu, men kan man inte loopa igenom session.contents och se om den specifika sessionen finns.
Det lät intressant...
this.Session.Content... och sen då? :)
Content finns bara för att vara bakåt kompatible. Den verkar bara returnera samma httpSessionState som man kallar ifrån.
Min lösning...
Samtidigt som jag sätter min session så sätter jag en annan med en strång i, sen kollar jag bara om det är likamed det senare, alltså finns den andra också...
Klumpigt kanske...
En annan variant är väl att kolla om den är längre är 0 tecken...
detta listar ut alla namn som finns i session-objectet. Om din session finns kommer namnet på den att listas ut.
For Each Sess IN Session
'## -- kontrollera om session finns --
If Sess = "kundid" Then
'## -- gör vad du ska om sessionen finns --
End If
Next
cya,
PatrikB