避免密码明文传输
说明
密码加密是很常见的安全性需求,但由于涉及前后端,前后端分离的情况下,开发人员容易只关心自己熟悉的领域,最终导致“知道要加密,实际还是没明文”的情况发生。
本文分享实际可运行的前后端代码,以减轻大家实现密码密文传输的负担。
流程说明:前端加密,后端解密。
当然,数据库存储的肯定是密文。这里后端解密的意思是:需要使用密码的时候,如获取数据库的连接,由后端解密后使用。
密码加密是很常见的安全性需求,但由于涉及前后端,前后端分离的情况下,开发人员容易只关心自己熟悉的领域,最终导致“知道要加密,实际还是没明文”的情况发生。
本文分享实际可运行的前后端代码,以减轻大家实现密码密文传输的负担。
流程说明:前端加密,后端解密。
当然,数据库存储的肯定是密文。这里后端解密的意思是:需要使用密码的时候,如获取数据库的连接,由后端解密后使用。
检查名字是否重复是很常用的业务需求,本文推荐一种更省心、更少bug的做法。
不敢说是最佳实践,因为受限于特定技术、框架,并且带上了个人偏好。
虽然原理简单,但细节很多,不想每次搞来搞去,因此还是有记录的价值。
本文用到的技术栈为:MySQL、MyBatis、Java 8、Jackson
导入需要用到对象,MultipartFile。
@PostMapping("/import")
public boolean importLicense(
@RequestParam("file") MultipartFile file,
@RequestParam("tenantId") @NotBlank String tenantId,
) {
return true;
}
无论是 C/S 还是 B/S 模式下的应用通过是 API 来交互的。而 API 的消费者与提供者,可以看成一枚硬币的正反面。
通常来说,对 Web 应用而言,前端是消费者,后端是提供者。
今天就站在服务提供方的视角来看下,升级依赖版本,遇到的难点有哪些?
原因是 json 包含的字段,多于 Java 实体类定义的字段。
解决方法很简单:
new ObjectMapper()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
或者为相关实体添加注解:
@JsonIgnoreProperties(ignoreUnknown = true)
public class ObjectParseFromJsonString { }
项目中依赖了一个旧的 snapshot.jar,有人提出要求必须使用 release.jar,不能使用 snapshot。
问题来了,该 jar 所属的源码不知所踪,那还怎么发布 release.jar 呢?这就是本文要解决的问题。
本文将借助 RestAssured 工具,向大家介绍如何进行 API 测试,从而在团队中开启接口自动化之路。
本文的示例代码使用的是 Java 语言。尽管本文的首要读者是 Java 研发人员,但道理是相通的,其他语言的研发人员也能从中受益。
什么是 API 测试?简单来说,可以认为是针对 Controller 层的测试,但不是 Mock,而是会真实地处理请求,与数据库或外部服务进行交互。
为什么要做 API 测试呢?
GitLab 在企业内部还是比较通用的,其 CI 用起来个人也觉得比 Jenkins 顺手,因此在这里分享一下相关的实践经验。
maven compile
得到 class 文件后
cd /my-app/target/com/mycompany/app
java App