为 Sitecore 解决方案创建虚拟用户 - 模拟目的
Create virtual user for Sitecore solution - Impersonation purpose
我真的需要一些帮助,但让我先解释一下我必须做什么。
我有一个 Sitecore
超级用户,具有 Impersonation
角色。该用户应该能够模拟其他用户(所有用户都在 extranet
域中),拥有原始用户的配置文件信息和角色。
关于这个超级用户的主要事情是他应该能够冒充另一个人并更改设置或被冒充帐户的其他方面。
我尝试了不同的方法,但似乎无法解决这个问题。创建虚拟用户是我的想法,但是无法成功。
顺便提一下,此解决方案中的每个用户都有一个分配给他们的自定义配置文件模板,创建虚拟用户后必须保留该模板。
另外,我有一些简单的问题。有谁知道这个虚拟用户在创建后位于何处?或者这些存储了多长时间?是否需要以某种方式删除它们?
非常感谢任何能提供帮助的人。
有一个Sitecore.Security.Accounts.UserSwitcher
class。我不确定它是否可以解决问题,但您可以尝试:
Sitecore.Security.Accounts.UserSwitcher.Enter(someOtherUser)
然后是
Sitecore.Security.Accounts.UserSwitcher.Exit()
或
using (UserSwitcher switcher = new UserSwitcher(...))
{
...
}
编辑:
要检查您是否处于 UserSwitcher
模式,请使用:
User impersonatedUser = UserSwitcher.CurrentValue;
如果impersonatedUser
的值为null,则表示您未处于UserSwitcher
模式。
所以,
显然解决方案实际上是使用虚拟用户,如下所示:
var virtualUser = AuthenticationManager.BuildVirtualUser(emailAddress, true);
SetBaseProfile();
SaveUserRoles();
// login the virtual user
AuthenticationManager.Login(virtualUser);
为了检查活跃用户是否是虚拟的,我不得不使用:
AuthenticationManager.GetActiveUser().RuntimeSetting.isVirtual;
谢谢。
我真的需要一些帮助,但让我先解释一下我必须做什么。
我有一个 Sitecore
超级用户,具有 Impersonation
角色。该用户应该能够模拟其他用户(所有用户都在 extranet
域中),拥有原始用户的配置文件信息和角色。
关于这个超级用户的主要事情是他应该能够冒充另一个人并更改设置或被冒充帐户的其他方面。
我尝试了不同的方法,但似乎无法解决这个问题。创建虚拟用户是我的想法,但是无法成功。
顺便提一下,此解决方案中的每个用户都有一个分配给他们的自定义配置文件模板,创建虚拟用户后必须保留该模板。
另外,我有一些简单的问题。有谁知道这个虚拟用户在创建后位于何处?或者这些存储了多长时间?是否需要以某种方式删除它们?
非常感谢任何能提供帮助的人。
有一个Sitecore.Security.Accounts.UserSwitcher
class。我不确定它是否可以解决问题,但您可以尝试:
Sitecore.Security.Accounts.UserSwitcher.Enter(someOtherUser)
然后是
Sitecore.Security.Accounts.UserSwitcher.Exit()
或
using (UserSwitcher switcher = new UserSwitcher(...))
{
...
}
编辑:
要检查您是否处于 UserSwitcher
模式,请使用:
User impersonatedUser = UserSwitcher.CurrentValue;
如果impersonatedUser
的值为null,则表示您未处于UserSwitcher
模式。
所以,
显然解决方案实际上是使用虚拟用户,如下所示:
var virtualUser = AuthenticationManager.BuildVirtualUser(emailAddress, true);
SetBaseProfile();
SaveUserRoles();
// login the virtual user
AuthenticationManager.Login(virtualUser);
为了检查活跃用户是否是虚拟的,我不得不使用:
AuthenticationManager.GetActiveUser().RuntimeSetting.isVirtual;
谢谢。