【问题标题】:Create virtual user for Sitecore solution - Impersonation purpose为 Sitecore 解决方案创建虚拟用户 - 模拟目的
【发布时间】:2015-11-02 19:51:23
【问题描述】:

我真的需要一些帮助,但让我先解释一下我必须做什么。

我有一个Sitecore 超级用户,它具有Impersonation 角色。该用户应该能够冒充其他用户(他们都在extranet 域上),拥有原始用户的个人资料信息和角色。

这个超级用户的主要特点是他应该能够冒充另一个人并更改被冒充帐户的设置或其他方面。

我尝试了不同的方法,但我似乎无法弄清楚这一点。创建虚拟用户是我的想法,但无法成功。

顺便提一下,此解决方案中的每个用户都有一个分配给他们的自定义配置文件模板,在创建虚拟用户后必须保留该模板。

另外,我有一些简短的问题。有谁知道创建后这个虚拟用户在哪里?或者这些存储了多少时间?是否需要以某种方式删除它们?

非常感谢任何可以提供帮助的人。

【问题讨论】:

    标签: sitecore virtual impersonation sitecore7


    【解决方案1】:

    所以,

    显然解决方案实际上是使用虚拟用户,如下所示:

    var virtualUser = AuthenticationManager.BuildVirtualUser(emailAddress, true);
    
    SetBaseProfile();
    SaveUserRoles();
    
    // login the virtual user
    AuthenticationManager.Login(virtualUser);
    

    为了检查活动用户是否是虚拟用户,我不得不使用:

    AuthenticationManager.GetActiveUser().RuntimeSetting.isVirtual;
    

    谢谢。

    【讨论】:

      【解决方案2】:

      有一个Sitecore.Security.Accounts.UserSwitcher 类。我不确定它是否可以解决问题,但您可以尝试:

      Sitecore.Security.Accounts.UserSwitcher.Enter(someOtherUser)
      

      然后

      Sitecore.Security.Accounts.UserSwitcher.Exit()
      

      using (UserSwitcher switcher = new UserSwitcher(...))
      {
          ...
      }
      

      编辑:

      要检查您是否处于UserSwitcher 模式,请使用:

      User impersonatedUser = UserSwitcher.CurrentValue;
      

      如果impersonatedUser的值为null,则说明你不在UserSwitcher模式下。

      【讨论】:

      • 在这种情况下,我可以检查我是否在冒充吗?如果是这样,怎么做?谢谢。
      • @MariusPopa 你可以使用UserSwitcher.CurrentValue 属性。查看更新的答案。
      • 酷。我会试一试,然后回来回答。谢谢。
      • 所以...显然UserSwitcher 在这种情况下不能使用,因为这意味着我有可能只对该特定用户进行一些操作,但实际上不能使用它像往常一样。所以我还是要坚持虚拟用户的想法。
      猜你喜欢
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      • 2019-06-06
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      相关资源
      最近更新 更多