Vue.component("http-firewall-js-cookie-options", { props: ["v-js-cookie-options"], mounted: function () { this.updateSummary() }, data: function () { let options = this.vJsCookieOptions if (options == null) { options = { life: 0, maxFails: 0, failBlockTimeout: 0, failBlockScopeAll: false, scope: "service" } } return { options: options, isEditing: false, summary: "" } }, watch: { "options.life": function (v) { let i = parseInt(v, 10) if (isNaN(i)) { i = 0 } this.options.life = i this.updateSummary() }, "options.maxFails": function (v) { let i = parseInt(v, 10) if (isNaN(i)) { i = 0 } this.options.maxFails = i this.updateSummary() }, "options.failBlockTimeout": function (v) { let i = parseInt(v, 10) if (isNaN(i)) { i = 0 } this.options.failBlockTimeout = i this.updateSummary() }, "options.failBlockScopeAll": function (v) { this.updateSummary() } }, methods: { edit: function () { this.isEditing = !this.isEditing }, updateSummary: function () { let summaryList = [] if (this.options.life > 0) { summaryList.push("有效时间" + this.options.life + "秒") } if (this.options.maxFails > 0) { summaryList.push("最多失败" + this.options.maxFails + "次") } if (this.options.failBlockTimeout > 0) { summaryList.push("失败拦截" + this.options.failBlockTimeout + "秒") } if (this.options.failBlockScopeAll) { summaryList.push("尝试全局封禁") } if (summaryList.length == 0) { this.summary = "默认配置" } else { this.summary = summaryList.join(" / ") } }, confirm: function () { this.isEditing = false } }, template: `
| 有效时间 |
秒
验证通过后在这个时间内不再验证,默认3600秒。 |
| 最多失败次数 |
次
建议填入一个不小于5的数字,以减少误判几率。允许用户失败尝试的最多次数,超过这个次数将被自动加入黑名单。如果为空或者为0,表示不限制。 |
| 失败拦截时间 |
秒
在达到最多失败次数(大于0)时,自动拦截的时长;如果为0表示不自动拦截。 |
| 失败全局封禁 |
选中后,表示允许系统尝试全局封禁某个IP,以提升封禁性能。 |