クライアント ユーザーが誰でもログイン ユーザーを追加・切断できる


概要

Sitecore Clientユーザーなら誰でも、許可されているログイン ユーザー数に達した場合にログイン ユーザーを追加したり切断することが可能です。しかし、管理者権限を有するユーザーのみがログイン ユーザーの追加や切断操作を行えたほうがよい場合があります。

解決策

非管理者ユーザーがブースト機能(ログイン ユーザー数の増加)を使用できないようにするには、以下のカスタマイズを適用していただく事ができます。このコードの例はカスタマイズの出発点としてのみ提供されており、必要に応じて変更が必要な場合がある点にご注意ください。

  1. カスタムのBoostUsersControllerクラスを作成します。
    namespace Sitecore.Support.Client.LicenseOptions.Controllers
    {
        public class BoostUsersController : Controller
        {
    		[HttpGet]
    		public void RedirectToBoost()
    		{
    			if (!Context.User.IsAuthenticated || !Context.User.IsAdministrator)
    			{
    				base.Response.StatusCode = 401;
    			}
    			else
    			{
    				base.Response.Redirect(GetBoostUrl(), endResponse: true);
    			}
    		}
    
    		protected string GetBoostUrl()
    		{ ... }
    	}
    }
  2. カスタムのInitializeRedirectToBoostRouteクラスを作成します。
    namespace Sitecore.Support.Mvc.Pipelines.Initialize
    {
        internal class InitializeRedirectToBoostRoute
        {
            public virtual void Process(PipelineArgs args)
            {
                Assert.ArgumentNotNull(args, "args");
                this.RegisterRoutes(RouteTable.Routes, args);
            }
    
            protected virtual void RegisterRoutes(RouteCollection routes, PipelineArgs args)
            {
                string[] namespaces = new string[] { "Sitecore.Support.Client.LicenseOptions.Controllers" };
                routes.MapRoute("RouteName", "api/sitecore/BoostUsers/{action}", new
                {
                    controller = "BoostUsers",
                    action = "RedirectToBoost",
                    id = UrlParameter.Optional
                }, namespaces);
            }
        }
    }
  3. 作成したクラスをアセンブリにビルドします。
  4. アセンブリをウェブサイトの\binフォルダーに配置します。
  5. 構成パッチ ファイル\App_Config\Include\zzzフォルダーに作成し、カスタム プロセッサーを構成に適用します。
    <?xml version="1.0" encoding="utf-8"?>
    <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:role="http://www.sitecore.net/xmlconfig/role/">
    <sitecore role:require="Standalone or ContentManagement or XMCloud"> <pipelines> <initialize> <processor type="Sitecore.Support.Mvc.Pipelines.Initialize.InitializeRedirectToBoostRoute, YourAssemblyName" patch:before="processor[@type='Sitecore.Mvc.Pipelines.Initialize.InitializeCommandRoute, Sitecore.Speak.Client']"/> </initialize>
    </pipelines> </sitecore> </configuration>