mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-07-31 21:32:56 +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.Handlers;
|
||||
using Orchard.Localization;
|
||||
@ -6,9 +7,11 @@ using Orchard.SecureSocketsLayer.Models;
|
||||
|
||||
namespace Orchard.SecureSocketsLayer.Drivers {
|
||||
public class SslSettingsPartDriver : ContentPartDriver<SslSettingsPart> {
|
||||
private readonly ISignals _signals;
|
||||
private const string TemplateName = "Parts/SecureSocketsLayer.Settings";
|
||||
|
||||
public SslSettingsPartDriver() {
|
||||
public SslSettingsPartDriver(ISignals signals) {
|
||||
_signals = signals;
|
||||
T = NullLocalizer.Instance;
|
||||
}
|
||||
|
||||
@ -25,7 +28,9 @@ namespace Orchard.SecureSocketsLayer.Drivers {
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
@ -37,6 +42,8 @@ namespace Orchard.SecureSocketsLayer.Drivers {
|
||||
part.Urls = context.Attribute(elementName, "Urls") ?? "";
|
||||
part.InsecureHostName = context.Attribute(elementName, "InsecureHostName") ?? "";
|
||||
part.SecureHostName = context.Attribute(elementName, "SecureHostName") ?? "";
|
||||
|
||||
_signals.Trigger(SslSettingsPart.CacheKey);
|
||||
}
|
||||
|
||||
protected override void Exporting(SslSettingsPart part, ExportContentContext context) {
|
||||
|
@ -12,6 +12,8 @@ namespace Orchard.SecureSocketsLayer.Models {
|
||||
}
|
||||
|
||||
public class SslSettingsPart : ContentPart {
|
||||
public const string CacheKey = "SslSettingsPart";
|
||||
|
||||
public string Urls
|
||||
{
|
||||
get { return this.As<InfosetPart>().Get<SslSettingsPart>("Urls"); }
|
||||
|
@ -13,10 +13,15 @@ namespace Orchard.SecureSocketsLayer.Services {
|
||||
public class SecureSocketsLayerService : ISecureSocketsLayerService {
|
||||
private readonly IWorkContextAccessor _workContextAccessor;
|
||||
private readonly ICacheManager _cacheManager;
|
||||
private readonly ISignals _signals;
|
||||
|
||||
public SecureSocketsLayerService(IWorkContextAccessor workContextAccessor, ICacheManager cacheManager) {
|
||||
public SecureSocketsLayerService(
|
||||
IWorkContextAccessor workContextAccessor,
|
||||
ICacheManager cacheManager,
|
||||
ISignals signals) {
|
||||
_workContextAccessor = workContextAccessor;
|
||||
_cacheManager = cacheManager;
|
||||
_signals = signals;
|
||||
}
|
||||
|
||||
public bool ShouldBeSecure(string actionName, string controllerName, RouteValueDictionary routeValues) {
|
||||
@ -186,6 +191,7 @@ namespace Orchard.SecureSocketsLayer.Services {
|
||||
private SslSettings GetSettings() {
|
||||
return _cacheManager.Get("SslSettings",
|
||||
ctx => {
|
||||
ctx.Monitor(_signals.When(SslSettingsPart.CacheKey));
|
||||
var settingsPart = _workContextAccessor.GetContext().CurrentSite.As<SslSettingsPart>();
|
||||
return new SslSettings {
|
||||
Urls = settingsPart.Urls,
|
||||
|
Loading…
Reference in New Issue
Block a user