当前位置: 首页 > news >正文

开发 网站 费用长沙网站制作公司

开发 网站 费用,长沙网站制作公司,类似传奇的网页游戏,网站交易模块怎么做基于Spring Security添加流控的过程&#xff1a; 步骤1: 添加依赖 确保项目中包含了Spring Security和Sentinel-Core的相关依赖。在Maven项目中&#xff0c;可以在pom.xml中添加如下依赖&#xff1a; <!-- Spring Security --> <dependency><groupId>org.…

基于Spring Security添加流控的过程:

步骤1: 添加依赖

确保项目中包含了Spring Security和Sentinel-Core的相关依赖。在Maven项目中,可以在pom.xml中添加如下依赖:

<!-- Spring Security -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency><!-- Sentinel-Core -->
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-core</artifactId><version>1.8.6</version> <!-- 根据最新版本调整 -->
</dependency>

步骤2: 初始化Sentinel配置

创建一个配置类来初始化Sentinel,并加载流控规则。使用@Configuration注解标记此配置类,并通过@PostConstruct注解的方法来确保在应用启动时执行初始化逻辑。

import com.alibaba.csp.sentinel.init.InitFunc;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
import org.springframework.context.annotation.Configuration;import java.util.ArrayList;
import java.util.List;@Configuration
public class SentinelConfig implements InitFunc {@Overridepublic void init() throws Exception {loadFlowRules();}@PostConstructpublic void loadFlowRules() {List<FlowRule> rules = new ArrayList<>();// 通用限流规则FlowRule generalRule = new FlowRule("/*").setCount(100) // 一般接口的限流阈值.setGrade(FlowRule.Grade.QPS).setControlBehavior(FlowRule.ControlBehavior.DEFAULT);rules.add(generalRule);// 白名单URL的特殊流控规则,假设允许较高流量FlowRule whitelistRule = new FlowRule("/api/public/**").setCount(1000) // 较宽松的限流阈值.setGrade(FlowRule.Grade.QPS).setControlBehavior(FlowRule.ControlBehavior.DEFAULT);rules.add(whitelistRule);FlowRuleManager.loadRules(rules);}
}

步骤3: 创建Sentinel过滤器

创建一个自定义过滤器,用于在请求处理前执行Sentinel的流量控制检查。

import org.springframework.web.filter.GenericFilterBean;import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class SentinelSecurityFilter extends GenericFilterBean {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;String uri = request.getRequestURI();// 使用Sentinel进行流量控制检查Entry entry = null;try {entry = SphU.entry(uri);filterChain.doFilter(request, response);} catch (BlockException e) {response.setStatus(HttpServletResponse.SC_TOO_MANY_REQUESTS);response.getWriter().write("Too many requests.");} finally {if (entry != null) {entry.exit();}}}
}

步骤4: 集成到Spring Security

在Spring Security的配置中注册Sentinel过滤器,并配置安全规则。假设您已经有了一个Spring Security的配置类,如果没有,创建一个。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;@Configuration
@EnableWebSecurity
public class SecurityConfig {@Beanpublic SentinelSecurityFilter sentinelSecurityFilter() {return new SentinelSecurityFilter();}@Beanpublic SecurityFilterChain filterChain(HttpSecurity http) throws Exception {http.csrf(csrf -> csrf.disable()) // 如果不需要CSRF保护,可以关闭.authorizeRequests(authz -> authz.antMatchers("/api/public/**").permitAll() // 白名单URL允许匿名访问.anyRequest().authenticated() // 其他请求需要认证).addFilterBefore(sentinelSecurityFilter(), UsernamePasswordAuthenticationFilter.class) // Sentinel过滤器在JWT验证之前.formLogin(form -> form.disable()) // 禁用表单登录,根据需要调整.httpBasic(withDefaults()); // 或者根据需要配置HTTP Basic认证等return http.build();}
}

总结

  1. 添加依赖:引入Spring Security和Sentinel-Core的依赖。
  2. 配置Sentinel:通过@Configuration类初始化Sentinel并加载流控规则。
  3. 创建Sentinel过滤器:自定义过滤器实现流量控制。
  4. 集成Spring Security:配置类中注册过滤器并定义安全策略。

按照上述步骤,您可以基于Spring Security应用集成Sentinel-Core,实现流量控制,同时对白名单URL实施特殊处理。

http://www.yayakq.cn/news/392339/

相关文章:

  • 用ps怎么做短视频网站免费万能视频提取器
  • 手机网站开发合同网站分类主要有哪些
  • 北京外贸网站建设公司湖南住房城乡建设部网站
  • 企业静态网站源码东阳高端营销型网站建设品牌
  • 网站收录下降原因网站如何运作
  • 河南建设集团网站青岛建网站多少钱
  • 做网站备案哪些条件淄博服装网站建设
  • 网站留言板有什么用厦门外贸网站建设 之家
  • 外贸网站建设行业发展情况微信5000人接推广费用
  • 哈尔滨企业建站系统百度谷歌seo优化
  • frontpage做网站中信建设有限责任公司财务情况
  • 大连响应式网站制作注册网站卖钱最多的人
  • 网站自己建机房分毫报价小程序
  • 怎样申请一个免费的网站空间网站建设的进度计划书
  • 广州市网站建设制作费用wordpress admin-ajax.php
  • iis搭建网站时图片网站seo
  • 网站友情链接网站维护和制作怎么做会计分录
  • 保定seo网站排名分销商城系统的特点
  • 深圳协会网站建设做借贷网站平台
  • 网站建设服务费进入什么科目特产网站建设策划书
  • 化妆品网站开发流程和进度安排文汇网站建设
  • 索菲亚全屋定制官方网站所以免费爱做网站
  • 漂亮的博客网站模板站长交流平台
  • 怎么查网站注册信息python 网站架构
  • 金阊seo网站优化软件关于网站内容建设的正确说法
  • 天津建设银行东丽网站上海有几个区域
  • 公司做网站留言板书店网站建设可行性分析
  • 外贸服装接单网站天辰建设网站
  • 开发个网站开票名称是什么个人养老保险网上怎么缴费
  • wordpress 列表页吉安百度seo