473,385 Members | 1,356 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

Session vars vs. HttpContext.Current.User

Currently, I am storing information about the currently logged on user
in Session variables that are stored in SQL. However, I am using
role-based security, so I am storing custom roles in a GenericPrincipal
object that I attached to Context.User. My question is this:

Can I create a new class, ExtendedPrincipal for instance, and simply
inherit System.Security.Principal and store all of the information
currently stored in Session variables in this new object? Is this
responsible/efficient/appropriate?

Thanks in advance!
Jason

Nov 19 '05 #1
15 2444
Since the Session is specific to the User, there is no need to add this
level of complexity.

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
Neither a follower nor a lender be.

"Jason" <ja*************@hotmail.com> wrote in message
news:11*********************@l41g2000cwc.googlegro ups.com...
Currently, I am storing information about the currently logged on user
in Session variables that are stored in SQL. However, I am using
role-based security, so I am storing custom roles in a GenericPrincipal
object that I attached to Context.User. My question is this:

Can I create a new class, ExtendedPrincipal for instance, and simply
inherit System.Security.Principal and store all of the information
currently stored in Session variables in this new object? Is this
responsible/efficient/appropriate?

Thanks in advance!
Jason

Nov 19 '05 #2
Thanks. I was under the impression that using session variables was
yesterdays technology and that this information was handled better by a
new .NET way. This is good though. Now I don't have to go back and
make alot of changes.

Nov 19 '05 #3
Something you could do though would be to create a class with shared numbers
that exposes these session variables as properties.
This way you'll get strong typing and intellisense on those values plus you
don't need to change at once as under the hood there are still stored as
session variables.

Patrice

--

"Jason" <ja*************@hotmail.com> a écrit dans le message de
news:11*********************@o13g2000cwo.googlegro ups.com...
Thanks. I was under the impression that using session variables was
yesterdays technology and that this information was handled better by a
new .NET way. This is good though. Now I don't have to go back and
make alot of changes.

Nov 19 '05 #4
Never thought about that! But I am unfamiliar with "shared numbers" or
how to get a list of "choices" to be displayed when you are trying to
set a property of a class.

Nov 19 '05 #5
What language are you using ? The keyword is Shared in VB.NET and static in
C#.
It allows to have a member that is the same for all objects of a class.
Under the hood it uses the user session to store the value.

Having a list is done using an Enumeration (Enum in both languages if I
remember)...

Actually I didn't thought about that either. Saw this suggestion once in
this group...

Patrice

--

"Jason" <ja*************@hotmail.com> a écrit dans le message de
news:11*********************@l41g2000cwc.googlegro ups.com...
Never thought about that! But I am unfamiliar with "shared numbers" or
how to get a list of "choices" to be displayed when you are trying to
set a property of a class.

Nov 19 '05 #6
> Under the hood it uses the user session to store the value.

Static objects are stored in the application heap, not Session.

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
Neither a follower nor a lender be.

"Patrice" <no****@nowhere.com> wrote in message
news:ej**************@TK2MSFTNGP10.phx.gbl...
What language are you using ? The keyword is Shared in VB.NET and static
in
C#.
It allows to have a member that is the same for all objects of a class.
Under the hood it uses the user session to store the value.

Having a list is done using an Enumeration (Enum in both languages if I
remember)...

Actually I didn't thought about that either. Saw this suggestion once in
this group...

Patrice

--

"Jason" <ja*************@hotmail.com> a écrit dans le message de
news:11*********************@l41g2000cwc.googlegro ups.com...
Never thought about that! But I am unfamiliar with "shared numbers" or
how to get a list of "choices" to be displayed when you are trying to
set a property of a class.


Nov 19 '05 #7
"Patrice" <no****@nowhere.com> wrote in message
news:u7**************@TK2MSFTNGP10.phx.gbl...
don't need to change at once as under the hood there are still stored as
session variables.


No they aren't! They're stored as application variables.
Nov 19 '05 #8
> No they aren't! They're stored as application variables.

Afraid not. Static objects are stored in the application heap. Always have
been. Always will be. That is, after all, the definition of "static."

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
Neither a follower nor a lender be.

"Mark Rae" <ma**@mark-N-O-S-P-A-M-rae.co.uk> wrote in message
news:uB**************@TK2MSFTNGP14.phx.gbl...
"Patrice" <no****@nowhere.com> wrote in message
news:u7**************@TK2MSFTNGP10.phx.gbl...
don't need to change at once as under the hood there are still stored as
session variables.


No they aren't! They're stored as application variables.

Nov 19 '05 #9
Kevin ...
Technically, you are correct ... if these static members are merely
accessors for private variables. For example:
Public Class MySessionVars
Private Shared _myInt As Integer
Public Shared Property MyInt() As Integer
Get
Return _myInt
End Get
Set(ByVal Value As Integer)
_myInt = Value
End Set
End Property
End ClassThis would store the variables in the heap *and* have the same
values for every user! Not desirable in this situation.
Doing this, however, would be different:
Public Class MySessionVars
Public Shared Property MyInt() As Integer
Get
Return CInt(HttpContext.Current.Session("MyInt"))
End Get
Set(ByVal Value As Integer)
HttpContext.Current.Session("MyInt") = Value
End Set
End Property
End Class
In this case, the static property is merely a wrapper around the current
HttpContext's Session object. Note that this will *crash and burn* if not in
an ASP.NET environment! It is the second method that I think Patrice was
referring to ... and I would agree with Patrice on this practice. It's a
nice layer to abstract the details of the Session, providing flexibility on
storage location of the information, providing intellisense and strong
typing. Many Good Things(tm).
Jason ... you'd add the above class (or something like it) to your project
as a class file in the web solution. From there, you would refer to it like
so:
Dim myInt as Integer = MySessionVars.MyInt

You do not have to create an instance of the class to access static/Shared
members of the type.
"Kevin Spencer" wrote:
Under the hood it uses the user session to store the value.


Static objects are stored in the application heap, not Session.

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
Neither a follower nor a lender be.

"Patrice" <no****@nowhere.com> wrote in message
news:ej**************@TK2MSFTNGP10.phx.gbl...
What language are you using ? The keyword is Shared in VB.NET and static
in
C#.
It allows to have a member that is the same for all objects of a class.
Under the hood it uses the user session to store the value.

Having a list is done using an Enumeration (Enum in both languages if I
remember)...

Actually I didn't thought about that either. Saw this suggestion once in
this group...

Patrice

--

"Jason" <ja*************@hotmail.com> a écrit dans le message de
news:11*********************@l41g2000cwc.googlegro ups.com...
Never thought about that! But I am unfamiliar with "shared numbers" or
how to get a list of "choices" to be displayed when you are trying to
set a property of a class.



Nov 19 '05 #10
Thanks to everyone for your input. My project is in C#, but the above
code is easily translatable. Once of these days, when I have nothing
better to do, I'm going to write a VB.NET -> C# -> VB.NET translator.
Then I'll be rich (provided someone else hasn't already done it).

Nov 19 '05 #11
"Kevin Spencer" <ke***@DIESPAMMERSDIEtakempis.com> wrote in message
news:u0**************@TK2MSFTNGP09.phx.gbl...
No they aren't! They're stored as application variables.


Afraid not. Static objects are stored in the application heap. Always have
been. Always will be. That is, after all, the definition of "static."


Isn't that what I said?
Nov 19 '05 #12
Around here, static is what you get when
people post unresearched "answers" to questions.

No signal. Just noisy static.

;-)

Juan T. Llibre
ASP.NET MVP
http://asp.net.do/foros/
Foros de ASP.NET en Español
=====================

"Kevin Spencer" <ke***@DIESPAMMERSDIEtakempis.com> wrote in message
news:u0**************@TK2MSFTNGP09.phx.gbl...
No they aren't! They're stored as application variables.


Afraid not. Static objects are stored in the application heap. Always have
been. Always will be. That is, after all, the definition of "static."

--
HTH,

Kevin Spencer
Microsoft MVP
.Net Developer
Neither a follower nor a lender be.

"Mark Rae" <ma**@mark-N-O-S-P-A-M-rae.co.uk> wrote in message
news:uB**************@TK2MSFTNGP14.phx.gbl...
"Patrice" <no****@nowhere.com> wrote in message
news:u7**************@TK2MSFTNGP10.phx.gbl...
don't need to change at once as under the hood there are still stored as
session variables.


No they aren't! They're stored as application variables.


Nov 19 '05 #13
Hi J,

Technically I AM correct. A Property is a wrapper for 2 (up to) methods (get
and set). If the Property is static, the methods are static, and stored in
the heap. A static method can work with Session and Application via the
HttpContext. However, the variables that it works with are NOT static.
Therefore, a static property is NOT stored in Session or Application, but in
the heap.

I wasn't disagreeing with Patrice's advice, simply pointing out a technical
error in her explanation of it.

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
Neither a follower nor a lender be.

"J Sawyer [Microsoft]" <JS**************@discussions.microsoft.com> wrote in
message news:3B**********************************@microsof t.com...
Kevin ...
Technically, you are correct ... if these static members are merely
accessors for private variables. For example:
Public Class MySessionVars
Private Shared _myInt As Integer
Public Shared Property MyInt() As Integer
Get
Return _myInt
End Get
Set(ByVal Value As Integer)
_myInt = Value
End Set
End Property
End ClassThis would store the variables in the heap *and* have the same
values for every user! Not desirable in this situation.
Doing this, however, would be different:
Public Class MySessionVars
Public Shared Property MyInt() As Integer
Get
Return CInt(HttpContext.Current.Session("MyInt"))
End Get
Set(ByVal Value As Integer)
HttpContext.Current.Session("MyInt") = Value
End Set
End Property
End Class
In this case, the static property is merely a wrapper around the current
HttpContext's Session object. Note that this will *crash and burn* if not
in
an ASP.NET environment! It is the second method that I think Patrice was
referring to ... and I would agree with Patrice on this practice. It's a
nice layer to abstract the details of the Session, providing flexibility
on
storage location of the information, providing intellisense and strong
typing. Many Good Things(tm).
Jason ... you'd add the above class (or something like it) to your project
as a class file in the web solution. From there, you would refer to it
like
so:
Dim myInt as Integer = MySessionVars.MyInt

You do not have to create an instance of the class to access static/Shared
members of the type.
"Kevin Spencer" wrote:
> Under the hood it uses the user session to store the value.


Static objects are stored in the application heap, not Session.

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
Neither a follower nor a lender be.

"Patrice" <no****@nowhere.com> wrote in message
news:ej**************@TK2MSFTNGP10.phx.gbl...
> What language are you using ? The keyword is Shared in VB.NET and
> static
> in
> C#.
> It allows to have a member that is the same for all objects of a class.
> Under the hood it uses the user session to store the value.
>
> Having a list is done using an Enumeration (Enum in both languages if I
> remember)...
>
> Actually I didn't thought about that either. Saw this suggestion once
> in
> this group...
>
> Patrice
>
>
>
> --
>
> "Jason" <ja*************@hotmail.com> a écrit dans le message de
> news:11*********************@l41g2000cwc.googlegro ups.com...
>> Never thought about that! But I am unfamiliar with "shared numbers"
>> or
>> how to get a list of "choices" to be displayed when you are trying to
>> set a property of a class.
>>
>
>


Nov 19 '05 #14
> Isn't that what I said?

No. It is not. Application variables are stored in an instantiated
Collection object in Application memory. Static objects are stored in the
heap. You do know what the heap is, don't you?

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
Neither a follower nor a lender be.

"Mark Rae" <ma**@mark-N-O-S-P-A-M-rae.co.uk> wrote in message
news:ep*************@TK2MSFTNGP15.phx.gbl...
"Kevin Spencer" <ke***@DIESPAMMERSDIEtakempis.com> wrote in message
news:u0**************@TK2MSFTNGP09.phx.gbl...
No they aren't! They're stored as application variables.


Afraid not. Static objects are stored in the application heap. Always
have been. Always will be. That is, after all, the definition of
"static."


Isn't that what I said?

Nov 19 '05 #15
You are both right !!

The "it" wasn't referring to static members in general but to the session
wrapper class that uses static properties and that stores under the hood the
value in the user session object as described by J Sawyer but I agree that I
was far from being clear...

Terminology is really sometimes difficult Kevin, properties are never
stored, they are just code that eventually stores something where you want
(not necessarily on the heap) ;-)

Patrice

--

"Kevin Spencer" <ke***@DIESPAMMERSDIEtakempis.com> a écrit dans le message
de news:uY**************@TK2MSFTNGP14.phx.gbl...
Hi J,

Technically I AM correct. A Property is a wrapper for 2 (up to) methods (get and set). If the Property is static, the methods are static, and stored in
the heap. A static method can work with Session and Application via the
HttpContext. However, the variables that it works with are NOT static.
Therefore, a static property is NOT stored in Session or Application, but in the heap.

I wasn't disagreeing with Patrice's advice, simply pointing out a technical error in her explanation of it.

--
HTH,

Kevin Spencer
Microsoft MVP
.Net Developer
Neither a follower nor a lender be.

"J Sawyer [Microsoft]" <JS**************@discussions.microsoft.com> wrote in message news:3B**********************************@microsof t.com...
Kevin ...
Technically, you are correct ... if these static members are merely
accessors for private variables. For example:
Public Class MySessionVars
Private Shared _myInt As Integer
Public Shared Property MyInt() As Integer
Get
Return _myInt
End Get
Set(ByVal Value As Integer)
_myInt = Value
End Set
End Property
End ClassThis would store the variables in the heap *and* have the same
values for every user! Not desirable in this situation.
Doing this, however, would be different:
Public Class MySessionVars
Public Shared Property MyInt() As Integer
Get
Return CInt(HttpContext.Current.Session("MyInt"))
End Get
Set(ByVal Value As Integer)
HttpContext.Current.Session("MyInt") = Value
End Set
End Property
End Class
In this case, the static property is merely a wrapper around the current
HttpContext's Session object. Note that this will *crash and burn* if not in
an ASP.NET environment! It is the second method that I think Patrice was referring to ... and I would agree with Patrice on this practice. It's a nice layer to abstract the details of the Session, providing flexibility
on
storage location of the information, providing intellisense and strong
typing. Many Good Things(tm).
Jason ... you'd add the above class (or something like it) to your project as a class file in the web solution. From there, you would refer to it
like
so:
Dim myInt as Integer = MySessionVars.MyInt

You do not have to create an instance of the class to access static/Shared members of the type.
"Kevin Spencer" wrote:
> Under the hood it uses the user session to store the value.

Static objects are stored in the application heap, not Session.

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
Neither a follower nor a lender be.

"Patrice" <no****@nowhere.com> wrote in message
news:ej**************@TK2MSFTNGP10.phx.gbl...
> What language are you using ? The keyword is Shared in VB.NET and
> static
> in
> C#.
> It allows to have a member that is the same for all objects of a class. > Under the hood it uses the user session to store the value.
>
> Having a list is done using an Enumeration (Enum in both languages if I > remember)...
>
> Actually I didn't thought about that either. Saw this suggestion once
> in
> this group...
>
> Patrice
>
>
>
> --
>
> "Jason" <ja*************@hotmail.com> a écrit dans le message de
> news:11*********************@l41g2000cwc.googlegro ups.com...
>> Never thought about that! But I am unfamiliar with "shared numbers"
>> or
>> how to get a list of "choices" to be displayed when you are trying to >> set a property of a class.
>>
>
>


Nov 19 '05 #16

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

14
by: Paul Yanzick | last post by:
Hello, I am trying to develop a book tracking application for my capstone in school, and am running into a problem. The application is an ASP.Net application written in C#. The first page you...
10
by: Anthony Williams | last post by:
Hi gang, This one looks like a bug :o( As you may or may not know, setting session management in web.config to use cookieless sessions causes the ASP.NET runtime to munge a session ID into...
8
by: Leon | last post by:
I know that I can access session state on an asp.net page using Page objects, but how do I access store data in sessionstate from the middle tiers?
8
by: Joe Abou Jaoude | last post by:
hi, I have a web app with forms authentication and a timeout session of 20 mins for security reasons. I recently added a feature that allows users (if they want to) to automatically log in...
2
by: Stuart | last post by:
Hi there I am using several processes within an .asp application that store variables in to session - typically: Session("UniqueName") = Value I am having a hell of a time overwriting the...
2
by: jakk | last post by:
Iam storing the session state in SQL Server. The Session gets stored in the SQL Server temp tables ( I can see some values in the two tables), but the session doesnt seem to timeout. We have a...
2
by: Mikael Östberg | last post by:
Hello all! I have this login function which doesn't work really well. I tried to do extend the built-in functionality in order to store things such as userName and email address in Session. ...
3
by: Lee Moore | last post by:
I have some user controls defined that represent a common header and footer for a particular site. the footer contains links with querystring parameters based on session variables. The problem is,...
1
by: Joel Reinford | last post by:
I am trying to build custom membership/role providers, inheriting from the base membership/role providers because I have an existing database with user authentication and roles. The membership part...
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
by: ryjfgjl | last post by:
In our work, we often need to import Excel data into databases (such as MySQL, SQL Server, Oracle) for data analysis and processing. Usually, we use database tools like Navicat or the Excel import...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.