2015-11-25 6 views
6

Wir haben ein Kentico-Modul entwickelt, das wir pro Site lizenzieren möchten.Nutzen Sie die Lizenzierung von Kentico, um das benutzerdefinierte Modul zu lizenzieren

Hat noch jemand versucht, die eingebaute Kentico Lizenzierung für diesen Zweck zu nutzen?

Ich denke an einen sicheren Endpunkt auf unserem Server, der die Domain/Lizenz der Kentico-Site validiert, auf der das Modul ausgeführt wird.

z. Wenn die Domain/Lizenz auf unseren Servern nicht existiert, wird das Modul nicht für die Site ausgeführt.

Ist das machbar?

Antwort

4

Ich denke, ich habe das herausgefunden.

Auf meinem Modul habe ich die CheckLicense Methode als solche außer Kraft gesetzt:

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; 
    } 

Und dann kann ich verwenden:

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

Auf den Funktionen des Moduls zu gewährleisten ordnungsgemäß lizenziert ist.

Die Methodenüberschreibung ist eine Vereinfachung, ich habe Caching für die externen Dienstanforderungen implementiert, um zu verhindern, dass der Dienst jedes Mal abgefragt werden muss, wenn wir nach Berechtigungen suchen möchten.

Ich sende auch die licenseKey.Domain, weil uns Aliase egal sind, solange die Hauptdomain lizensiert ist, sollte das Modul unter beliebigen Aliasen funktionieren.

Wie sieht dieser Ansatz aus? Würde ich wirklich jedes Feedback von jemandem schätzen, der etwas in der Art gemacht hat, und was war die gewählte Lösung?

Danke, p.

+0

Sie können 'SiteDomainAliasInfoProvider' verwenden, um alle Aliase einer Site zu erhalten ... ist das wonach Sie suchen? – rocky

+0

Eigentlich ganz anders, ich suche nach der Domain der von Kentico vergebenen Hauptlizenz, unabhängig von Alias- oder Test-/Entwicklungslizenzen. –

+0

Und welche Informationen haben Sie verfügbar? Ich denke, durch die Kombination von 'SiteInfoProvider',' SiteDomainAliasInfoProvider' und 'LicenseKeyInfoProvider' sollten Sie die Informationen unabhängig davon abrufen können, ob Sie eine Site-ID, einen Domain-Namen oder einen Domain-Alias ​​zur Verfügung haben. – rocky