2

У меня есть веб-приложение asp.net (не веб-сайт), которое я пытаюсь поддерживать профили для анонимных пользователей. У меня есть форма, и я хочу, чтобы анонимные пользователи могли вводить свое имя и адрес электронной почты только один раз и иметь эту информацию, автоматически доступную для следующей загрузки для них.Как вы получаете анонимный токен аутентификации asp.net для поддержки профиля?

В моей Web.config я имею анонимную установку ID как так:

<anonymousIdentification enabled="true" cookieless="AutoDetect" /> 

У меня есть профиль раздела установка, как это:

<profile defaultProvider="SqlProvider" enabled="true" inherits="QA_Web_Tools.UserProfile"> 
    <providers> 
    <clear /> 
    <add connectionStringName="QAToolsConnectionString" name="SqlProvider" 
     type="System.Web.Profile.SqlProfileProvider" /> 
    </providers> 
</profile> 

Наконец, из-за мое приложение является веб-приложение а не веб-сайт, я использую профили через этот пользовательский объект:

public class UserProfile : ProfileBase 
{ 
    public static UserProfile GetUserProfile(string username) 
    { 
     return Create(username) as UserProfile; 
    } 

    public static UserProfile GetUserProfile() 
    { 
     return Create(Membership.GetUser().UserName) as UserProfile; 
    } 

    [SettingsAllowAnonymous(true)] 
    public string FullName 
    { 
     get { return base["FullName"] as string; } 
     set { base["FullName"] = value; } 
    } 

    [SettingsAllowAnonymous(true)] 
    public string BuildEmail 
    { 
     get { return base["BuildEmail"] as string; } 
     set { base["BuildEvmail"] = value; } 
    } 
} 

Этот код основан на this reference.

Проблема в том, что этот код не поддерживает анонимных пользователей, или, если это так, я не знаю, как это сделать. Я не могу использовать метод GetUserProfile() без параметров, потому что если пользователь является анонимным, Membership.GetUser() имеет значение NULL. Я могу передать анонимный токен ID в первый метод GetUserProfile(string username), но я не могу найти способ получить анонимный токен идентификатора для текущего пользователя.

Кто-нибудь знает, как получить эту информацию? Google, похоже, не возвращает полезные результаты.

Thanks,

ответ

2

Успех!

Я изменил:

public static UserProfile GetUserProfile() 
{ 
    return Create(Membership.GetUser().UserName) as UserProfile; 
} 

в

public static UserProfile GetUserProfile() 
    { 
     return HttpContext.Current.Profile as UserProfile; 
    } 

и теперь он работает!

+0

Могу ли я задать вам вопрос, этот параметр дает возможность отслеживать анонимных пользователей с возможностью использовать эту конфигурацию - например: guid - когда они окончательно регистрируются на платформе? brgds –

+1

Я действительно не уверен, что это делается автоматически, но я сомневаюсь. Один из способов справиться с этим - в логике «Создать учетную запись» вы отслеживаете предыдущую анонимную информацию пользователя, а после регистрации вы копируете эти данные в свою новую учетную запись. – KallDrexx

+0

отлично, спасибо за идею! –