You will need to save the IPrincipal somewhere and restore it with each request. If you will use FormsAuthentication, this is a good solution:
ASP.NET 2.0 Form Authentication - Keeping it Custom Still Easy
here you can find other solutions:
Where is registered user information stored in ASP.NET MVC using forms authentication?
and possibly many other StackOverflow issues :)
EDIT
About MyBusinessLayerSecurityClass.CreatePrincipal (id, id.Name):
:
http://msdn.microsoft.com/en-us/library/aa480476.aspx
:
FormsAuthenticationModule GenericPrincipal HTTP . GenericPrincipal FormsIdentity, . . , , IPrincipal, PostAuthenticate. PostAuthenticate FormsAuthenticationModule cookie GenericPrincipal FormsIdentity. IPrincipal FormsIdentity, HttpContext. .
FormsIdentity , cookie cookie. , , IPrincipal. , HttpContext.Current.User null ( GenericPrincipal, ). HttpContext.Current.User null, cookie , , .