2015-11-25 9 views
6

サイトごとにライセンスを取得するKenticoモジュールを開発しました。Kenticoのライセンスを利用してカスタムモジュールのライセンスを購入

誰かが、この目的のために内蔵のKenticoライセンスを利用しようとしましたか?

私が考えているのは、モジュールを実行しているKenticoサイトのドメイン/ライセンスを検証する安全なエンドポイントをサーバー上に持つことです。

など。ドメイン/ライセンスが当社のサーバーに存在しない場合、モジュールはそのサイトに対して実行されません。

これは実現可能ですか?

答えて

4

私はこれを考え出したかもしれないと思います。

public override bool CheckLicense(string domain, FeatureEnum feature, ObjectActionEnum action) 
    { 
     if (domain != null) 
      domain = LicenseKeyInfoProvider.ParseDomainName(domain); 

     int siteId = LicenseHelper.GetSiteIDbyDomain(domain); 
     var licenseKey = LicenseKeyInfoProvider.GetLicenseKeyInfo(domain, FeatureEnum.Unknown); 
     if (siteId > 0 && licenseKey != null) 
     { 
      // TODO: query external service with licenseKey.Domain for a valid license for this module 
      return true; 
     } 

     return false; 
    } 

をそして私は使用することができます:私のモジュールで

は私のようなCheckLicenseメソッドをオーバーライドしまし

ModuleManager.CheckModuleLicense("My.Module.Name", RequestContext.CurrentDomain, FeatureEnum.Unknown, ObjectActionEnum.Read) 

機能のモジュールが適切にライセンスされていることを確認します。

メソッドオーバーライドは単純化されています。私は、外部サービス要求にキャッシュを実装して、アクセス許可をチェックするたびにサービスを照会する必要がないようにしました。

メインドメインにライセンスが与えられている限り、エイリアスは気にしないので、私はlicenseKey.Domainも送信します。

このアプローチはどのように見えますか?ソートの何かをしたことのある人からのフィードバックは本当にありがたいでしょうか?解決策を選んだのは何ですか?

ありがとう、 p。

+0

'SiteDomainAliasInfoProvider'を使ってサイトのすべてのエイリアスを取得することができます。探しているものは? – rocky

+0

エイリアスやテスト/開発ライセンスとは無関係に、実際にはかなり重大なことですが、Kenticoが発行したメインライセンスのドメインを探しています。 –

+0

どのような情報がありますか?私は 'SiteInfoProvider'、' SiteDomainAliasInfoProvider'と 'LicenseKeyInfoProvider'を組み合わせることで、利用可能なサイトID、ドメイン名、またはドメインエイリアスがあるかどうかにかかわらず情報を取得できるはずだと思います。 – rocky