一般的项目 如果没有做防刷 容易被人爆接口 或者就是说没有做token防刷过滤. 容易被人用正常的token刷接口.有些token非一次性. 用户登录之后生成token会有一个过期时间,但一般没有做频率检查,每访问一次,会延长这个token时间,刷新用户状态 另一种就是养号,拿着真实的token,哪怕你是5分钟 1分钟. 很多的网站找回密码的接口是没有做防刷的,只是检查token是否正常. 通过验证码认证当前用户,是否为当前用户. 前几天,就用多线程刷过一个三方网站的找回密码.成功改掉密码. 一…
Spring Boot 之:接口参数校验,学习资料 网址 SpringBoot(八) JSR-303 数据验证(写的比较好) https://qq343509740.gitee.io/2018/07/24/Spring%E5%85%A8%E5%AE%B6%E6%A1%B6/SpringBoo2.x/SpringBoot%EF%BC%88%E5%85%AB%EF%BC%89%20JSR-303%20%E6%95%B0%E6%8D%AE%E9%AA%8C%E8%AF%81/ spring-boot入…
我们写的接口默认都是http形式的,不过我们的接口很容易被人抓包,而且一抓全是明文的挺尴尬的 spring boot配置https生成证书大的方向有3种: 1.利用keytool自己生成证书 2.从免费的https网站申请证书,例如letsencrypt 3.买收费的证书 本人没钱,记录下第一种和第二种方法. 第一种方法: 找个地方keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore…
说明:使用了注解的方式进行对接口防刷的功能,非常高大上,本文章仅供参考 一,技术要点:springboot的基本知识,redis基本操作, 首先是写一个注解类: import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.Rete…
在开发rest接口时,我们往往会定义统一的返回格式,列如: { "status": true, "code": 200, "message": null, "data": [ { "id": "101", "name": "jack" }, { "id": "102", "name": &…
在项目中我们遇到404找不到的错误.或者500服务器错误都需要配置相应的页面给用户一个友好的提示,而在Spring Boot中我们需要如何设置. 我们需要实现ErrorController接口,重写handleError方法. package com.ciyou.edu.controller import org.springframework.boot.autoconfigure.web.ErrorController import org.springframework.stereotype…
转:https://yq.aliyun.com/articles/617307 SpringBoot 确实为我们做了很多事情, 但有时候我们想要自己定义一些Handler,Interceptor,ViewResolver,MessageConverter,该怎么做呢.在Spring Boot 1.5版本都是靠重写WebMvcConfigurerAdapter的方法来添加自定义拦截器,消息转换器等.SpringBoot 2.0 后,该类被标记为@Deprecated.因此我们只能靠实现WebMvc…
使用Spring Boot开发微服务的过程中,我们会使用别人提供的接口,也会设计接口给别人使用,这时候微服务应用之间的协作就需要有一定的规范. 基于rpc协议,我们一般有两种思路:(1)提供服务的应用统一将异常包起来,然后用错误码交互:(2)提供服务的应用将运行时异常抛出,抛出自定义的业务异常,服务的调用者通过异常catch来处理异常情况. 基于HTTP协议,那么最流行的就是RESTful协议,服务提供方会自己处理所有异常,并且返回的结果中会跟HTTP的状态码相结合,这篇文章我们就用一个例子来说…
场景描述: ajax设置timeout在本机测试有效,但是在生产环境等外网环境无效的问题 1.ajax的timeout属性设置 前端请求超时事件[网络连接不稳定时候,就无效了] var data = JSON字符串; $.ajax({ type: "POST", url: url, dataType: 'json', timeout: 3000,//3s钟超时 data: data, xhrFields: { withCredentials: true }, success: func…
1.配置pom.xml文件的<parent>和<depencencies>,指定spring boot web依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.RELEASE</version> <r…
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/vbirdbest/article/details/80789817一:token 简介Token:访问令牌access token, 用于接口中, 用于标识接口调用者的身份.凭证,减少用户名和密码的传输次数.一般情况下客户端(接口调用方)需要先向服务器端申请一个接口调用的账号,服务器会给出一个appId和一个key, key用于参数签名使用,注意key保存到客户端,需要做一些安全处理,防止泄露.…
目录 一: 定义注解 二: 建立动态代理类 三: 注入spring容器 四: 编写拦截器 五: 新建测试类 在某些业务场景中,我们只需要业务代码中定义相应的接口或者相应的注解,并不需要实现对应的逻辑. 比如 mybatis和feign: 在 mybatis 中,我们只需要定义对应的mapper接口:在 feign 中,我们只需要定义对应业务系统中的接口即可. 那么在这种场景下,具体的业务逻辑时怎么执行的呢,其实原理都是动态代理. 我们这里不具体介绍动态代理,主要看一下它在springboot项目…
1. @MapperScan @MapperScan("com.streamax.ums.business.dao") 注解扫描的包路径是否有问题 2. 目录结构 mapper接口文件所在目录结构需要与对应xml文件的目录结构保持一致     3. namespace xml 的 namespace 属性和对应的 mapper 接口文件的完整类路径保持一致 4. xml中的引用类 检查xml中引用的类的完整路径是否正确…
在设计接口时,有很多因素要考虑,如接口的业务定位,接口的安全性,接口的可扩展性.接口的稳定性.接口的跨域性.接口的协议规则.接口的路径规则.接口单一原则.接口过滤和接口组合等诸多因素,本篇文章将简要分析这些因素. 一 规范性建议 1.职责原则 在设计接口时,必须明确接口的职责,即接口类型,接口应解决什么业务问题等 2.单一性原则 在明确接口职责的条件下,尽量做到接口单一,即一个接口只做一件事,而非两件以上.很多非资深接口设计者,在设计接口时,总认为接口所做的事越多,越牛叉,这是非常严重的错误认识…
在设计接口时,有很多因素要考虑,如接口的业务定位,接口的安全性,接口的可扩展性.接口的稳定性.接口的跨域性.接口的协议规则.接口的路径规则.接口单一原则.接口过滤和接口组合等诸多因素,本篇文章将简要分析这些因素. 一 规范性建议 1.职责原则 在设计接口时,必须明确接口的职责,即接口类型,接口应解决什么业务问题等 2.单一性原则 在明确接口职责的条件下,尽量做到接口单一,即一个接口只做一件事,而非两件以上.很多非资深接口设计者,在设计接口时,总认为接口所做的事越多,越牛叉,这是非常严重的错误认识…
一.为什么选择RocketMQ消息队列? 首先RocketMQ是阿里巴巴自研出来的,也已开源.其性能和稳定性从双11就能看出来,借用阿里的一句官方介绍:历年双 11 购物狂欢节零点千万级 TPS.万亿级数据洪峰,创造了全球最大的业务消息并发以及流转纪录(日志类消息除外): 在始终保证高性能前提下,支持亿级消息堆积,不影响集群的正常服务,在削峰填谷(蓄洪).微服务解耦的场景下尤为重要:这,就能说明RocketMQ的强大. 二.RocketMQ的特点和优势(可跳过看三的整合代码) 削峰填谷(主要解决…
在开发分布式高并发系统时有三把利器用来保护系统:缓存.降级.限流 缓存 缓存的目的是提升系统访问速度和增大系统处理容量 降级 降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决后再打开 限流 限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务.排队或等待.降级等处理 问题描述 1. 某天A君突然发现自己的接口请求量突然涨到之前的10倍,没多久该接口几乎不可使用,并引发连锁反应导致整个系统崩溃.如何应对这…
前言 Spring boot的CommandLineRunner接口主要用于实现在应用初始化后,去执行一段代码块逻辑,这段初始化代码在整个应用生命周期内只会执行一次. 如何使用CommandLineRunner接口 我们可以用以下三种方式去使用CommandLineRunner接口: 1)和@Component注解一起使用 这种使用方式相当简便,如下所示: @Component public class ApplicationStartupRunner implements CommandLin…
转载于:https://www.jianshu.com/p/af9738634a21 Spring Boot 的 Actuator 提供了很多生产级的特性,比如监控和度量Spring Boot 应用程序.Actuator 的这些特性可以通过众多 REST 接口.远程 shell 和 JMX 获得. 一.Actuator 的 REST 接口 Spring Boot Actuator 的关键特性是在应用程序里提供众多 Web 接口,通过它们了解应用程序运行时的内部状况.Actuator 提供了 13…
目录 一.Spring Boot 是什么 二.为什么要使用 Spring Boot 三.快速入门 3.1 创建 Spring Boot 项目 3.2 项目结构 3.3 引入 Web 依赖 3.4 编写第一个接口 3.5 启动程序,验证效果 四.总结 五.GitHub 示例代码 一.Spring Boot 是什么 以下截图自 Spring Boot 官方文档: 翻译整理一下,内容如下: Spring Boot 是基于 Spring 框架基础上推出的一个全新的框架, 旨在让开发者可以轻松地创建一个可…
我最早是 2016 年底开始写 Spring Boot 相关的博客,当时使用的版本还是 1.4.x ,文章发表在 CSDN 上,阅读量最大的一篇有 42W+,如下图: 2017 年由于种种原因,就没有再继续更新 Spring Boot 相关的博客了,2018年又去写书了,也没更新,现在 Spring Boot 最新稳定版是 2.1.4 ,松哥想针对此写一个系列教程,专门讲 Spring Boot2 中相关的知识点.这个系列,就从本篇开始吧. Spring Boot 介绍 我们刚开始学习 Java…
最近有意重新学习下SpringBoot知识,特地总结了SpringBoot的知识点,对于想要学习的人来说,够用. SpringBoot学习路径 第一部分:了解 Spring Boot Spring Boot 概述 从零开始学习 Spring Boot 的开发环境IntelliJ IDEA Spring Boot 特性及Spring Boot 2.0新特性 Spring Boot Maven 介绍 Spring Boot 快速入门 开发你的第一个Spring Boot Web项目 学习三部曲 创建…
课程计划 课程地址点这里 本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 个部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 项目实践开发.Spring Boot 介绍.前后端分离.API 规范等内容旨在让读者更加熟悉 SpringBoot 及企业开发中需要注意的事项并具有使用 SpringBoot 技术进行基本功能开发的能力:这最后的项目实战为课程的主要部分,我会带着大家实际的开发一个前后端分离的 Spring Boot 实践项目,…
一.SpringApplication banner,就是启动时输出的信息,可以在classpath下添加 banner.txt,或者设置 banner.location 来指向特定的文件.(默认编码utf-8,或者通过banner.charset指定) 除了txt,你还可以使用 banner.gif (jpg / png),或者设定 banner.imgage.location. 下面是默认的banner(忽略吧,没意义的东西):…
[原创文章]        使用Spring Boot的Web项目,处理/login请求的控制器方法(该方法会返回JSON格式的数据).此时如果访问localhost:8080/login.html,用户期望返回jsons数据,但框架却报错: There was an unexpected error (type=Not Acceptable, status=406). Could not find acceptable representation 或者这样的异常信息: org.springf…
本篇文章是续<如何使用VS Code编写Spring Boot> 之后,结合自己.net经验捣鼓的小demo,一个简单的CRUD,对于习惯了VS操作模式的.net人员非常方便,强大的智能提示,简单又干净,一起开启愉快的java编程之旅吧. 一.环境搭建 请移步<如何使用VS Code编写Spring Boot> ,当页面输出Hello World 就算成功啦 二.熟悉Spring注解,跟路由 Spring真的是将注解用到了极致,能一个注解搞定的东西,从来不罗嗦,熟练的使用这些注解不…
Spring Boot Profiles 简介 Profile 的概念其实很早在 Spring Framework 就有了,在 Spring Framework 3.1 版本引入了注解 @Profile 和 Environment 环境配置的抽象,只是在 Spring Boot 框架里再进一步将 Profiles 功能进行扩展,使它也成为了 Spring Boot 特性之一,为此单独在 官方文档 25. Profiles 一节里介绍,文档里把 Spring Boot Profiles 也叫做 S…
前言 上文<一文掌握 Spring Boot Profiles> 是对 Spring Boot Profiles 的介绍和使用,因此本文将从源码角度探究 Spring Boot Profiles,让我们看下 Spring Boot 底层是如何应用 Profiles 进行环境配置的隔离与生效的. 正文 首先,我们先来看下一个简单的 Spring Boot 示例程序, 在主程序方法中,打印容器中获取到 User 对象,它只有一个 name 属性. 这里 name 属性引用了外部配置 user.us…
在编写 RestController 层的代码时,由于数据实体类定义了接口及实现类,本着面向接口编程的原则,我使用了接口作为 RestController 方法的入参. 代码大致如下(省略具体业务部分): (1)模型接口: public interface User { long getUserId(); void setUserId(long userId); String getUserName(); void setUserName(String userName); String get…