我已经构建了一个获取用户详细信息的存储库
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
我希望能够将这些细节拉下来 IF 用户登录和IF 缓存数据为空。
创建包含所有用户详细信息的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
答案 0 :(得分:2)
将完整的用户对象存储在会话变量中,而不仅仅是成员。
//store
Session("UserInfo") = _user
//read
Dim user = DirectCast(Session("UserInfo"), UrbanNow.Core.User)
(代码通过在线转换器转换为vb.net,我不知道任何vb.net,对于任何语法错误都很抱歉)