在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何解決Spring Boot接口防刷

Android編程精選 ? 來(lái)源:CSDN博客 ? 作者: CS打贏你 ? 2021-09-13 09:19 ? 次閱讀

一,技術(shù)要點(diǎn):Spring Boot的基本知識(shí),Redis基本操作,首先是寫(xiě)一個(gè)注解類:

import java.lang.annotation.Retention;

import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.METHOD;

import static java.lang.annotation.RetentionPolicy.RUNTIME;

@Retention(RUNTIME)

@Target(METHOD)

public @interface AccessLimit {

int seconds();

int maxCount();

boolean needLogin()default true;

}

接著就是在Interceptor攔截器中實(shí)現(xiàn):

import com.alibaba.fastjson.JSON;

import com.example.demo.action.AccessLimit;

import com.example.demo.redis.RedisService;

import com.example.demo.result.CodeMsg;

import com.example.demo.result.Result;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Component;

import org.springframework.web.method.HandlerMethod;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.OutputStream;

@Componentpublic class FangshuaInterceptor extends HandlerInterceptorAdapter {

@Autowired

private RedisService redisService;

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

//判斷請(qǐng)求是否屬于方法的請(qǐng)求

if(handler instanceof HandlerMethod){

HandlerMethod hm = (HandlerMethod) handler;

//獲取方法中的注解,看是否有該注解

AccessLimit accessLimit = hm.getMethodAnnotation(AccessLimit.class);

if(accessLimit == null){

return true;

}

int seconds = accessLimit.seconds();

int maxCount = accessLimit.maxCount();

boolean login = accessLimit.needLogin();

String key = request.getRequestURI();

//如果需要登錄

if(login){

//獲取登錄的session進(jìn)行判斷

//。..。.

key+=“”+“1”; //這里假設(shè)用戶是1,項(xiàng)目中是動(dòng)態(tài)獲取的userId

}

//從redis中獲取用戶訪問(wèn)的次數(shù)

AccessKey ak = AccessKey.withExpire(seconds);

Integer count = redisService.get(ak,key,Integer.class);

if(count == null){

//第一次訪問(wèn)

redisService.set(ak,key,1);

}else if(count 《 maxCount){

//加1

redisService.incr(ak,key);

}else{

//超出訪問(wèn)次數(shù)

render(response,CodeMsg.ACCESS_LIMIT_REACHED); //這里的CodeMsg是一個(gè)返回參數(shù)

return false;

}

}

return true;

}

private void render(HttpServletResponse response, CodeMsg cm)throws Exception {

response.setContentType(“application/json;charset=UTF-8”);

OutputStream out = response.getOutputStream();

String str = JSON.toJSONString(Result.error(cm));

out.write(str.getBytes(“UTF-8”));

out.flush();

out.close();

}

}

再把Interceptor注冊(cè)到springboot中

import com.example.demo.ExceptionHander.FangshuaInterceptor;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.config.annotation.InterceptorRegistry;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configurationpublic class WebConfig extends WebMvcConfigurerAdapter {

@Autowired

private FangshuaInterceptor interceptor;

@Override

public void addInterceptors(InterceptorRegistry registry) {

registry.addInterceptor(interceptor);

}

}

接著在Controller中加入注解

import com.example.demo.result.Result;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

@Controllerpublic class FangshuaController {

@AccessLimit(seconds=5, maxCount=5, needLogin=true)

@RequestMapping(“/fangshua”)

@ResponseBody

public Result《String》 fangshua(){

return Result.success(“請(qǐng)求成功”);

}

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8880

    瀏覽量

    152942
  • Sprint
    +關(guān)注

    關(guān)注

    0

    文章

    86

    瀏覽量

    15283

原文標(biāo)題:一個(gè)注解搞定 Spring Boot 接口防刷

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    校園點(diǎn)餐訂餐外賣跑腿Java源碼

    創(chuàng)建一個(gè)校園點(diǎn)餐訂餐外賣跑腿系統(tǒng)是一個(gè)復(fù)雜的項(xiàng)目,涉及到前端、后端、數(shù)據(jù)庫(kù)設(shè)計(jì)等多個(gè)方面。在這里,我可以提供一個(gè)簡(jiǎn)化的Java后端示例,使用Spring Boot框架來(lái)搭建一個(gè)基本的API服務(wù)。這個(gè)
    的頭像 發(fā)表于 12-24 14:55 ?429次閱讀
    校園點(diǎn)餐訂餐外賣跑腿Java源碼

    SSM開(kāi)發(fā)環(huán)境的搭建教程 SSM與Spring Boot的區(qū)別

    SSM開(kāi)發(fā)環(huán)境的搭建教程 SSM(Spring+SpringMVC+MyBatis)開(kāi)發(fā)環(huán)境的搭建涉及多個(gè)步驟,以下是詳細(xì)的教程: 創(chuàng)建Maven項(xiàng)目 : 使用Maven工具創(chuàng)建一個(gè)新的Maven
    的頭像 發(fā)表于 12-16 18:13 ?1074次閱讀

    Spring 應(yīng)用合并之路(二):峰回路轉(zhuǎn),柳暗花明

    提醒下,決定拋開(kāi) Spring Boot 內(nèi)置的父子容器方案,完全自己實(shí)現(xiàn)父子容器。 如何加載 web 項(xiàng)目? 現(xiàn)在的難題只有一個(gè):如何加載 web 項(xiàng)目?加載完成后,如何持續(xù)持有 web 項(xiàng)目?經(jīng)過(guò)思考后,可以創(chuàng)建一個(gè) boot
    的頭像 發(fā)表于 12-12 11:22 ?1023次閱讀

    Spring事務(wù)實(shí)現(xiàn)原理

    作者:京東零售 范錫軍 1、引言 springspring-tx模塊提供了對(duì)事務(wù)管理支持,使用spring事務(wù)可以讓我們從復(fù)雜的事務(wù)處理中得到解脫,無(wú)需要去處理獲得連接、關(guān)閉連接、事務(wù)提交和回滾等
    的頭像 發(fā)表于 11-08 10:10 ?1039次閱讀
    <b class='flag-5'>Spring</b>事務(wù)實(shí)現(xiàn)原理

    探索抖光電云臺(tái)無(wú)馬達(dá)驅(qū)動(dòng)方案的技術(shù)奧秘

    在當(dāng)今科技飛速發(fā)展的時(shí)代,抖光電云臺(tái)無(wú)馬達(dá)驅(qū)動(dòng)方案成為了眾多領(lǐng)域關(guān)注的焦點(diǎn)。這一技術(shù)不僅在攝影、攝像領(lǐng)域大放異彩,還在工業(yè)檢測(cè)、安監(jiān)控等領(lǐng)域發(fā)揮著重要作用。接下來(lái),讓我們一同深入解析這一
    的頭像 發(fā)表于 10-08 17:44 ?498次閱讀
    探索<b class='flag-5'>防</b>抖光電云臺(tái)無(wú)<b class='flag-5'>刷</b>馬達(dá)驅(qū)動(dòng)方案的技術(shù)奧秘

    何解決電感的漏感問(wèn)題

    電子發(fā)燒友網(wǎng)站提供《如何解決電感的漏感問(wèn)題.docx》資料免費(fèi)下載
    發(fā)表于 09-02 14:48 ?0次下載

    Spring Cloud Gateway網(wǎng)關(guān)框架

    SpringCloud Gateway功能特征如下: (1) 基于Spring Framework 5, Project Reactor 和 Spring Boot 2.0 進(jìn)行構(gòu)建; (2) 動(dòng)態(tài)路由:能夠匹配任何請(qǐng)求屬性;
    的頭像 發(fā)表于 08-22 09:58 ?635次閱讀
    <b class='flag-5'>Spring</b> Cloud Gateway網(wǎng)關(guān)框架

    單片機(jī)boot0和boot1怎么設(shè)置

    單片機(jī)Boot0和Boot1簡(jiǎn)介 Boot0和Boot1是單片機(jī)啟動(dòng)模式選擇引腳,用于選擇單片機(jī)的啟動(dòng)模式。 Boot0和
    的頭像 發(fā)表于 08-22 09:50 ?4586次閱讀

    stm32讀取boot引腳狀態(tài)

    在STM32微控制器中,Boot引腳(通常指的是BOOT0和BOOT1引腳)的狀態(tài)決定了設(shè)備啟動(dòng)時(shí)的引導(dǎo)模式。這些引腳的狀態(tài)在復(fù)位時(shí)被讀取,并據(jù)此選擇啟動(dòng)哪塊存儲(chǔ)器。比如,STM32F103系列
    的頭像 發(fā)表于 08-22 09:48 ?2140次閱讀

    STM32引腳中的BOOT1在哪里

    STM32是STMicroelectronics(意法半導(dǎo)體)推出的一系列32位微控制器,廣泛應(yīng)用于嵌入式系統(tǒng)設(shè)計(jì)。關(guān)于STM32的BOOT1引腳,它主要與系統(tǒng)的啟動(dòng)模式有關(guān)。 BOOT1引腳功能
    的頭像 發(fā)表于 08-22 09:43 ?3714次閱讀

    stm32boot0和boot1對(duì)應(yīng)哪個(gè)p引腳

    STM32系列微控制器是一種廣泛應(yīng)用于嵌入式系統(tǒng)領(lǐng)域的32位微控制器。在STM32系列微控制器中,BOOT0和BOOT1是兩個(gè)重要的引腳,它們用于設(shè)置設(shè)備的啟動(dòng)模式。 首先,讓我們了解STM32系列
    的頭像 發(fā)表于 08-22 09:40 ?5234次閱讀

    二級(jí)BOOT啟動(dòng)失敗的原因?

    同一套代碼,使用不同的編譯與入方式 1、make命令,編譯結(jié)果 eagle.flash.bin與eagle.irom0text.bin,入方式: 2、make BOOT=new APP=1
    發(fā)表于 07-18 06:04

    玩轉(zhuǎn)Spring狀態(tài)機(jī)

    說(shuō)起Spring狀態(tài)機(jī),大家很容易聯(lián)想到這個(gè)狀態(tài)機(jī)和設(shè)計(jì)模式中狀態(tài)模式的區(qū)別是啥呢?沒(méi)錯(cuò),Spring狀態(tài)機(jī)就是狀態(tài)模式的一種實(shí)現(xiàn),在介紹Spring狀態(tài)機(jī)之前,讓我們來(lái)看看設(shè)計(jì)模式中的狀態(tài)模式
    的頭像 發(fā)表于 06-25 14:21 ?1199次閱讀
    玩轉(zhuǎn)<b class='flag-5'>Spring</b>狀態(tài)機(jī)

    UWB室內(nèi)外高精度一體化融合定位系統(tǒng)源碼 UWB技術(shù)定位系統(tǒng)應(yīng)用場(chǎng)景 Java+Spring boot+MYSQL?技術(shù)開(kāi)發(fā)

    UWB室內(nèi)外高精度一體化融合定位系統(tǒng)源碼 UWB技術(shù)定位系統(tǒng)應(yīng)用場(chǎng)景 Java+Spring boot+MYSQL?技術(shù)開(kāi)發(fā) 系統(tǒng)聚焦基于UWB(超寬帶)技術(shù)的底層定位網(wǎng)絡(luò)和定位算法,通過(guò)對(duì)定位分站
    的頭像 發(fā)表于 06-18 10:46 ?684次閱讀
    UWB室內(nèi)外高精度一體化融合定位系統(tǒng)源碼 UWB技術(shù)定位系統(tǒng)應(yīng)用場(chǎng)景 Java+<b class='flag-5'>Spring</b> <b class='flag-5'>boot</b>+MYSQL?技術(shù)開(kāi)發(fā)

    工業(yè)平板電腦支持接口改制的應(yīng)用影響

    隨著科技的不斷進(jìn)步,新能源行業(yè)在全球范圍內(nèi)迅速發(fā)展。在這個(gè)快速變化的環(huán)境中,技術(shù)的更新?lián)Q代成為了企業(yè)發(fā)展的關(guān)鍵。億道信息公司推出的三工業(yè)平板電腦,通過(guò)支持接口改制,為新能源行業(yè)帶來(lái)了一場(chǎng)技術(shù)革新
    的頭像 發(fā)表于 05-13 17:13 ?402次閱讀
    主站蜘蛛池模板: 亚洲日本一区二区 | 可以直接看的黄色网址 | 日本三级黄色录像 | 午夜在线播放视频 | 国产色片| 婷婷九月丁香 | 窝窝午夜在线观看免费观看 | 中国日韩欧美中文日韩欧美色 | 欧美日本视频一区 | 插插插天天 | 亚洲欧美色鬼久久综合 | 国产免费一区二区三区香蕉精 | 成年香蕉大黄美女美女 | 日本视频www色 | 成人五级毛片免费播放 | 国产成人av在线 | 国产成人精品三级在线 | 永久免费看的啪啪网站 | 色天天色综合 | 天堂网成人 | 欧美人成在线观看 | 天天操夜夜操狠狠操 | 丁香花成人另类小说 | 高颜值露脸极品在线播放 | 宅男69免费永久网站 | 国产精品你懂的在线播放 | 69日本xxxxxxxxx13| 男女爱爱视频免费看 | 天天插天天操天天射 | 伊人狠狠丁香婷婷综合色 | 最好看的最新中文字幕2018免费视频 | 夜夜天天操 | 天天操天天谢 | 精品成人毛片一区二区视 | 日韩毛片免费在线观看 | 亚洲成人黄色网址 | 在线人成精品免费视频 | 亚洲a毛片 | 亚洲精品播放 | 国产人成高清视频观看 | 伊人狠狠丁香婷婷综合色 |