Я построил репозиторий, который получает данные пользователя
Public Function GetUserByOpenID(ByVal openid As String) As User Implements IUserRepository.GetUserByOpenID
Dim user = (From u In dc.Users
Where u.OpenID = openid
Select u).FirstOrDefault
Return user
End Function
И я хотел бы иметь возможность вывести эти детали вниз ЕСЛИ пользователь вошел в систему И ЕСЛИ кэшированные данные равны нулю.
Каков наилучший способ создания объекта User, который содержит все данные о пользователях, и сохранять его на всем сайте в течение всего срока их посещения?
Я пытался сделать это в моем Global.asax, но я не очень счастлив, используя переменные Session. Я предпочел бы иметь один объект со всеми деталями внутри.
Private Sub BaseGlobal_AcquireRequestState(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.AcquireRequestState
If Session("UserName") Is Nothing AndAlso User.Identity.IsAuthenticated Then
Dim repo As UrbanNow.Core.IUserRepository = New UrbanNow.Core.UserRepository
Dim _user As New UrbanNow.Core.User
_user = repo.GetUserByOpenID(User.Identity.Name)
Session("UserName") = _user.UserName()
Session("UserID") = _user.ID
End If
End Sub