【问题标题】:How to secure the CM site in Sitecore?如何保护 Sitecore 中的 CM 站点?
【发布时间】:2016-04-28 14:45:38
【问题描述】:

我正在尝试锁定 CM(主)站点。用户必须登录才能查看该站点。

下面的配置被添加到 sitecore.config。不幸的是,下面的实现只适用于主页(例如/)。 当匿名用户访问 /hello-world 时,他们会看到一个没有任何内容的“白色”页面。它不会将他们定向到登录页面。

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:set="http://www.sitecore.net/xmlconfig/set/">
  <sitecore>
    <sites>
      <site name="website" 
              set:requireLogin="true" 
              set:domain="sitecore" 
              set:loginPage="/sitecore/login" 
              set:targetHostName="master.website.com" 
              set:scheme="http" />
    </sites>
  </sitecore>
</configuration>

访问主页将我带到 login page 但是,如果我手动输入内部页面 URL,我会得到以下信息: white page

【问题讨论】:

  • 您是否拒绝了外网/匿名用户对主页及其所有孩子的读取权限?
  • 没有。如果我这样做了,智能发布会将这些设置发布到生产站点。我需要隔离 CM(内容管理)。
  • 你的问题不是很清楚。 CM 来自 Content Management,因此从您的问题中我了解到您正在尝试保护 Sitecore CMS .. 默认情况下是安全的。我猜你想为网站启用登录,对吧?
  • 没有。我想保护 CM 站点。只有当您访问主页时,CM 才会受到保护。如果你手动进入任何其他页面,你会得到一个没有内容的白页。
  • 嗨。您的网站是基于 Webforms 还是基于 MVC?当前 Sitecore 版本中存在一个已知错误,其中 requireLogin 属性在 MVC“页面”(使用 MVC 布局的页面)上没有得到尊重。

标签: sitecore sitecore8


【解决方案1】:

要使其工作,只需更改“网站”配置节点的 2 个设置 - requireLoginloginPage。所以你肯定设置正确。 我过去遇到过类似的“空白页”问题,这与 ItemNotFoundUrl 设置的一些错误配置有关。如果“hello-world”页面不存在,也可能是您的情况。

【讨论】:

    【解决方案2】:

    你能试试这个吗:

    <site name="website" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content" startItem="/hello-world" database="master" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false" requireLogin="true" loginPage="/sitecore/login/Default.aspx" />
    

    亮点:

    1. startItem :设置为 hello-world 页面(假设这是主页项)
    2. database:设置为 master(取决于您的测试用例,您也可以使用 web db)
    3. loginPage :重定向到 Sitecore 登录页面
    4. requireLogin :强制登录,设置为 TRUE

    【讨论】:

      【解决方案3】:

      经过进一步调查,并联系了sitecore社区,我发现sitecore 8 update 5 (mvc)存在一个bug。安全检查无法正常工作。

      这里是修复: 1. 添加一个继承自 SecurityCheck 的管道。

      public class SecurityCheck : Sitecore.Pipelines.RenderLayout.SecurityCheck
      {
                  private RequestBeginArgs originalArgs;
      
                  public virtual void Process(RequestBeginArgs args)
                  {
                      originalArgs = args;
                      Process(new RenderLayoutArgs((System.Web.UI.Page)new Sitecore.Web.UI.HtmlControls.Page(), (Item)null));
                  }
      
                  protected override bool HasAccess()
                  {
                      SiteContext site = Context.Site;
                      if (site != null && site.RequireLogin && (!Context.User.IsAuthenticated && !this.IsLoginPageRequest()))
                      {
                          originalArgs.AbortPipeline();
                          return false;
                      }
                      if (site == null || site.DisplayMode == DisplayMode.Normal || (Context.User.IsAuthenticated || !(PreviewManager.GetShellUser() == string.Empty)) || this.IsLoginPageRequest())
                          return true;
                      originalArgs.AbortPipeline();
                      return false;
                  }
      }
      

      2。将此处理器作为第一个处理器添加到

      <mvc.requestBegin>
          <!-- security check for site -->
          <processor type="Namespace.SecurityCheck, Assembly"/>
        </mvc.requestBegin>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-03
        • 1970-01-01
        • 1970-01-01
        • 2015-10-08
        • 2012-02-12
        • 2010-09-13
        • 2011-07-10
        • 1970-01-01
        相关资源
        最近更新 更多