Мне нужна лучшая рекомендация для обработки пользовательских свойств пользователя с членством OpenID - PullRequest
0 голосов
/ 13 июля 2010

Я использую 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 и Slug.

Я уже могу получить "ClaimedIdentifier" из AuthCookie, используя HttpContext.User.Identity.Name ... Мне просто нужно иметь возможность его расширить.

Заранее спасибо.

1 Ответ

0 голосов
/ 18 июля 2010

Этот вопрос выглядит просто как выражение этот вопрос и мой ответ будет таким же.1010 * Приветствие.

...