I am writing a user authentication class. During the request there are a lot of references to the current user, so I would like to cache it in memory instead of calling the database ala singleton. I am thinking about using session and clearing it at the end of every request.
like:
public static User Current() {
if (Session["current-user"] == null) {
Session["current-user"] = GetUserFromDB(); // example function, not real
}
return (User)Session["current-user"];
then in app_end request:
Session.Clear();
HttpContext.Items["user"] = user;
You can reference the context items during the entire request and it will be cleaned up at the end of it.
Use the HttpContext
class. You can get to it either in the context of a controller of HttpContext.Current
.
The HttpContext.Items
collection is what you want to use.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With