From e8c0096979a8e84d2351b9ca0b8b9c034510e161 Mon Sep 17 00:00:00 2001 From: nagocoler Date: Fri, 20 Dec 2024 16:31:28 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E5=90=8C=E6=AD=A5JWT=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E9=A1=B9=E7=9B=AE=E9=94=99=E8=AF=AF=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/filter/FlowLimitingFilter.java | 6 ++-- my-project-frontend/src/net/index.js | 29 +++++++++++++++---- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/my-project-backend/src/main/java/com/example/filter/FlowLimitingFilter.java b/my-project-backend/src/main/java/com/example/filter/FlowLimitingFilter.java index f7aaceb..5e9f5b0 100644 --- a/my-project-backend/src/main/java/com/example/filter/FlowLimitingFilter.java +++ b/my-project-backend/src/main/java/com/example/filter/FlowLimitingFilter.java @@ -45,7 +45,7 @@ public class FlowLimitingFilter extends HttpFilter { @Override protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { String address = request.getRemoteAddr(); - if (!tryCount(address)) + if (!"OPTIONS".equals(request.getMethod()) && !tryCount(address)) this.writeBlockMessage(response); else chain.doFilter(request, response); @@ -72,9 +72,9 @@ public class FlowLimitingFilter extends HttpFilter { * @throws IOException 可能的异常 */ private void writeBlockMessage(HttpServletResponse response) throws IOException { - response.setStatus(HttpServletResponse.SC_FORBIDDEN); + response.setStatus(429); response.setContentType("application/json;charset=utf-8"); PrintWriter writer = response.getWriter(); - writer.write(RestBean.forbidden("操作频繁,请稍后再试").asJsonString()); + writer.write(RestBean.failure(429, "请求频率过快,请稍后再试").asJsonString()); } } diff --git a/my-project-frontend/src/net/index.js b/my-project-frontend/src/net/index.js index a790abb..4695376 100644 --- a/my-project-frontend/src/net/index.js +++ b/my-project-frontend/src/net/index.js @@ -1,5 +1,6 @@ import axios from "axios"; import {ElMessage} from "element-plus"; +import router from "@/router"; const authItemName = "authorize" @@ -11,7 +12,12 @@ const accessHeader = () => { const defaultError = (error) => { console.error(error) - ElMessage.error('发生了一些错误,请联系管理员') + const status = error.response.status + if (status === 429) { + ElMessage.error(error.response.data.message) + } else { + ElMessage.error('发生了一些错误,请联系管理员') + } } const defaultFailure = (message, status, url) => { @@ -43,26 +49,37 @@ function storeAccessToken(remember, token, expire){ sessionStorage.setItem(authItemName, str) } -function deleteAccessToken() { +function deleteAccessToken(redirect = false) { localStorage.removeItem(authItemName) sessionStorage.removeItem(authItemName) + if(redirect) { + router.push({ name: 'welcome-login' }) + } } function internalPost(url, data, headers, success, failure, error = defaultError){ axios.post(url, data, { headers: headers }).then(({data}) => { - if(data.code === 200) + if(data.code === 200) { success(data.data) - else + } else if(data.code === 401) { + failure('登录状态已过期,请重新登录!') + deleteAccessToken(true) + } else { failure(data.message, data.code, url) + } }).catch(err => error(err)) } function internalGet(url, headers, success, failure, error = defaultError){ axios.get(url, { headers: headers }).then(({data}) => { - if(data.code === 200) + if(data.code === 200) { success(data.data) - else + } else if(data.code === 401) { + failure('登录状态已过期,请重新登录!') + deleteAccessToken(true) + } else { failure(data.message, data.code, url) + } }).catch(err => error(err)) } -- 2.47.2 From 5f9c8a3c1ed0a8c783ba3c548d75a448682a59ef Mon Sep 17 00:00:00 2001 From: nagocoler Date: Fri, 20 Dec 2024 16:32:08 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=BA=E5=9D=9B?= =?UTF-8?q?=E5=B8=96=E5=AD=90=E5=88=97=E8=A1=A8=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/TopicEditor.vue | 74 +++++++++---------- .../src/views/forum/TopicList.vue | 6 +- 2 files changed, 37 insertions(+), 43 deletions(-) diff --git a/my-project-frontend/src/components/TopicEditor.vue b/my-project-frontend/src/components/TopicEditor.vue index bbb0c9e..ae0906e 100644 --- a/my-project-frontend/src/components/TopicEditor.vue +++ b/my-project-frontend/src/components/TopicEditor.vue @@ -146,45 +146,43 @@ const editorOption = {