mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-08-01 17:51:18 +08:00
Invalidating SSL settings cache
This commit is contained in:
parent
7abd20f9ec
commit
03f6d06f36
@ -1,4 +1,5 @@
|
|||||||
using Orchard.ContentManagement;
|
using Orchard.Caching;
|
||||||
|
using Orchard.ContentManagement;
|
||||||
using Orchard.ContentManagement.Drivers;
|
using Orchard.ContentManagement.Drivers;
|
||||||
using Orchard.ContentManagement.Handlers;
|
using Orchard.ContentManagement.Handlers;
|
||||||
using Orchard.Localization;
|
using Orchard.Localization;
|
||||||
@ -6,9 +7,11 @@ using Orchard.SecureSocketsLayer.Models;
|
|||||||
|
|
||||||
namespace Orchard.SecureSocketsLayer.Drivers {
|
namespace Orchard.SecureSocketsLayer.Drivers {
|
||||||
public class SslSettingsPartDriver : ContentPartDriver<SslSettingsPart> {
|
public class SslSettingsPartDriver : ContentPartDriver<SslSettingsPart> {
|
||||||
|
private readonly ISignals _signals;
|
||||||
private const string TemplateName = "Parts/SecureSocketsLayer.Settings";
|
private const string TemplateName = "Parts/SecureSocketsLayer.Settings";
|
||||||
|
|
||||||
public SslSettingsPartDriver() {
|
public SslSettingsPartDriver(ISignals signals) {
|
||||||
|
_signals = signals;
|
||||||
T = NullLocalizer.Instance;
|
T = NullLocalizer.Instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25,7 +28,9 @@ namespace Orchard.SecureSocketsLayer.Drivers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected override DriverResult Editor(SslSettingsPart part, IUpdateModel updater, dynamic shapeHelper) {
|
protected override DriverResult Editor(SslSettingsPart part, IUpdateModel updater, dynamic shapeHelper) {
|
||||||
updater.TryUpdateModel(part, Prefix, null, null);
|
if (updater.TryUpdateModel(part, Prefix, null, null)) {
|
||||||
|
_signals.Trigger(SslSettingsPart.CacheKey);
|
||||||
|
}
|
||||||
|
|
||||||
return Editor(part, shapeHelper);
|
return Editor(part, shapeHelper);
|
||||||
}
|
}
|
||||||
@ -37,6 +42,8 @@ namespace Orchard.SecureSocketsLayer.Drivers {
|
|||||||
part.Urls = context.Attribute(elementName, "Urls") ?? "";
|
part.Urls = context.Attribute(elementName, "Urls") ?? "";
|
||||||
part.InsecureHostName = context.Attribute(elementName, "InsecureHostName") ?? "";
|
part.InsecureHostName = context.Attribute(elementName, "InsecureHostName") ?? "";
|
||||||
part.SecureHostName = context.Attribute(elementName, "SecureHostName") ?? "";
|
part.SecureHostName = context.Attribute(elementName, "SecureHostName") ?? "";
|
||||||
|
|
||||||
|
_signals.Trigger(SslSettingsPart.CacheKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Exporting(SslSettingsPart part, ExportContentContext context) {
|
protected override void Exporting(SslSettingsPart part, ExportContentContext context) {
|
||||||
|
@ -12,6 +12,8 @@ namespace Orchard.SecureSocketsLayer.Models {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class SslSettingsPart : ContentPart {
|
public class SslSettingsPart : ContentPart {
|
||||||
|
public const string CacheKey = "SslSettingsPart";
|
||||||
|
|
||||||
public string Urls
|
public string Urls
|
||||||
{
|
{
|
||||||
get { return this.As<InfosetPart>().Get<SslSettingsPart>("Urls"); }
|
get { return this.As<InfosetPart>().Get<SslSettingsPart>("Urls"); }
|
||||||
|
@ -13,10 +13,15 @@ namespace Orchard.SecureSocketsLayer.Services {
|
|||||||
public class SecureSocketsLayerService : ISecureSocketsLayerService {
|
public class SecureSocketsLayerService : ISecureSocketsLayerService {
|
||||||
private readonly IWorkContextAccessor _workContextAccessor;
|
private readonly IWorkContextAccessor _workContextAccessor;
|
||||||
private readonly ICacheManager _cacheManager;
|
private readonly ICacheManager _cacheManager;
|
||||||
|
private readonly ISignals _signals;
|
||||||
|
|
||||||
public SecureSocketsLayerService(IWorkContextAccessor workContextAccessor, ICacheManager cacheManager) {
|
public SecureSocketsLayerService(
|
||||||
|
IWorkContextAccessor workContextAccessor,
|
||||||
|
ICacheManager cacheManager,
|
||||||
|
ISignals signals) {
|
||||||
_workContextAccessor = workContextAccessor;
|
_workContextAccessor = workContextAccessor;
|
||||||
_cacheManager = cacheManager;
|
_cacheManager = cacheManager;
|
||||||
|
_signals = signals;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool ShouldBeSecure(string actionName, string controllerName, RouteValueDictionary routeValues) {
|
public bool ShouldBeSecure(string actionName, string controllerName, RouteValueDictionary routeValues) {
|
||||||
@ -186,6 +191,7 @@ namespace Orchard.SecureSocketsLayer.Services {
|
|||||||
private SslSettings GetSettings() {
|
private SslSettings GetSettings() {
|
||||||
return _cacheManager.Get("SslSettings",
|
return _cacheManager.Get("SslSettings",
|
||||||
ctx => {
|
ctx => {
|
||||||
|
ctx.Monitor(_signals.When(SslSettingsPart.CacheKey));
|
||||||
var settingsPart = _workContextAccessor.GetContext().CurrentSite.As<SslSettingsPart>();
|
var settingsPart = _workContextAccessor.GetContext().CurrentSite.As<SslSettingsPart>();
|
||||||
return new SslSettings {
|
return new SslSettings {
|
||||||
Urls = settingsPart.Urls,
|
Urls = settingsPart.Urls,
|
||||||
|
Loading…
Reference in New Issue
Block a user