2014-11-14 4 views
1

У меня есть поле в профиле пользователя, которое соответствует идентификатору в другой системе. Я хочу установить это, когда пользователь посещает ссылку активации. После регистрации пользователя в другой системе я добавляю роль и устанавливаю ее утверждение членства в true. Я получаю сообщение об ошибке, заявляя, что я не могу установить свойство анонимного пользователя, поэтому я переместился туда, где я назначил идентификатор после роли/активации, но у меня все еще такая же ошибка.Sitecore asp.net Редактирование пользовательских свойств профиля пользователя

private bool SetCustomId(string username, Guid id) 
{ 

    var userProfile = ((User)User.FromName(username, AccountType.User)).Profile; 
    userProfile.SetCustomProperty("MyIdField", id.ToString()); 
    userProfile.Save();//error thrown here 
} 

Профиль пользователя является то, что я хотел бы ожидать, и когда я переместил его после того, как кусок, который назначен пользователю роль, они играют роль я ожидал их.

Вот фактическое исключение: This property cannot be set for anonymous users.

ответ

4

User.FromName(username, true) Попробуйте вместо этого. Логический параметр указывает, что он обрабатывает пользователя как аутентифицированный.

+0

Хмм хорошо. Это имеет смысл, основываясь исключительно на сообщении об ошибке. Любая идея, почему я не мог установить какие-либо свойства после предоставления пользователю роли/включения? Я предполагаю, что аутентифицировано так же, как и разрешено, что может быть неправильным. Возможно, аутентифицированные средства онлайн/в настоящее время вошли в систему или что-то в этом направлении. – Teeknow

+0

Да, аутентифицированное средство вошло в систему. Если флаг пользователя IsAuthenticated не установлен для пользователя, основной поставщик ролей предполагает, что пользователь является анонимным. По умолчанию свойства профиля нельзя установить для анонимных пользователей. –

3

Вы должны инициализировать пользователь, попробуйте следующий код:

userProfile.Initialize(username, true); 
+1

Это тоже сработало. – Teeknow

0

Попробуйте это:

private bool SetCustomId(string username, Guid id) 
{ 
    using(new Sitecore.Security.Accounts.UserSwitcher(Sitecore.Security.Accounts.User.FromName(username,false));) 
    { 
     var userProfile = ((User)User.FromName(username, AccountType.User)).Profile; 
     userProfile.SetCustomProperty("MyIdField", id.ToString()); 
     userProfile.Save(); 
    } 

} 
Смежные вопросы