Reputation: 4660
I am building a class to store User ID and User Role in a session. I'm not sure how this class will behave when multiple users are on the site at the same time. Does anyone see a problem with this?
public static class SessionHandler
{
//*** Session String Values ***********************
private static string _userID = "UserID";
private static string _userRole = "UserRole";
//*** Sets and Gets **********************************************************
public static string UserID
{
get
{
if (HttpContext.Current.Session[SessionHandler._userID] == null)
{ return string.Empty; }
else
{ return HttpContext.Current.Session[SessionHandler._userID].ToString(); }
}
set
{ HttpContext.Current.Session[SessionHandler._userID] = value; }
}
public static string UserRole
{
get
{
if (HttpContext.Current.Session[SessionHandler._userRole] == null)
{ return string.Empty; }
else
{ return HttpContext.Current.Session[SessionHandler._userRole].ToString(); }
}
set
{ HttpContext.Current.Session[SessionHandler._userRole] = value; }
}
}
Upvotes: 8
Views: 8381
Reputation: 1342
The code you posted is the exact replica of some code we have here.
It has been working fine for 2 years now.
Each users access his own session. Every request made to the server is a new thread. Even though 2 requests are simultaneous, the HttpContext.Current is different for each of those requests.
Upvotes: 7
Reputation: 566
This will work fine for mutiple users accessing your application as there will be different sessionid generated for all deffrent users accessing application concurrentely. It will work in similar way if you have defined two different session variables in your system. It will be like wrapping tow session states using static wrapper class SessionHandler.
Upvotes: 0
Reputation: 19573
You'll get a new session for each connection. No two users will ever share session. Each connection will have its own SessionID
value. As long as the user stays on your page (doesn't close the browser, etc.) the user will retain that session from one request to the next.
Upvotes: 4