我使用DotNetOpenAuth作为我的会员系统,现在我的工作方式似乎运作得很好。然而,我想要做的是在我的网站中构建针对AuthCookie而不是会话检查用户凭据的能力。
在会员提供商中,我可以检查这样的用户名
string UserName = System.Web.HttpContext.Current.User.Identity.Name;
''# which returns the OpenId ClaimedIdentifier
我想知道的是,是否有办法对此进行扩展,以便我可以从AuthCookie中检索自定义属性,而不必创建自己的会话对象。
目前我有这个设置。
UserSessionModal
Namespace Domain
Public Class UserSessionModel
Public Property ID As Integer
Public Property RegionID As Integer
Public Property Username As String
Public Property Slug As String
Public Sub New(ByVal user As User)
_ID = user.ID
_RegionID = user.RegionID
_Username = user.UserName
_Slug = Replace(user.UserName, " ", "-")
End Sub
End Class
End Namespace
BaseController (由所有控制器继承)
Protected Overrides Function CreateActionInvoker() As System.Web.Mvc.IActionInvoker
''# Create a UserInfo object for the logged in user
''# and store it in a session state.
If Session("UserInfo") Is Nothing AndAlso User.Identity.IsAuthenticated Then
Dim user As Domain.UserSessionModel = New Domain.UserSessionModel(OpenIdService.GetOpenId(HttpContext.User.Identity.Name).User)
Session("UserInfo") = user
End If
Return MyBase.CreateActionInvoker()
End Function
然后在我的观点中,我做了类似的事情
<%
Dim user As MyApp.Core.Domain.UserSessionModel = DirectCast(Session("UserInfo"), MyApp.Core.Domain.UserSessionModel)
%>
<%: Html.ActionLink(user.UserName, "Details", "Users", New With {.id = user.ID, .slug = user.Slug}, Nothing)%>
我真正需要做的就是一起删除会话内容,只需检查AuthCookie以获取我的自定义属性ID
,RegionID
,Username
和{{ 1}}。
我已经可以使用Slug
从AuthCookie中获取“ClaimedIdentifier”...我只需要能够扩展它。
提前致谢。