前端关闭验证码

配置终端不校验验证码

自 V5.12.1 起,可在网站配置的图形化界面中直接选择 验证码模式,支持文字点选、滑块拼图、数学验证码和关闭验证码;如果需要针对特定终端跳过校验,再结合下文服务端配置。

验证码开关说明

这里验证码开关,指的是服务端不会校验请求是否携带验证码及其正确性,不是前端不显示验证码

终端验证码配置

前端关闭验证码显示

前端验证码配置

验证码生成原理

生成验证码

public class ImageCodeCreateHandler implements HandlerFunction<ServerResponse> {

	private final ObjectMapper objectMapper;

	@Override
	@SneakyThrows
	public Mono<ServerResponse> handle(ServerRequest serverRequest) {
		CaptchaVO vo = new CaptchaVO();
		vo.setCaptchaType(CommonConstants.IMAGE_CODE_TYPE);
		CaptchaService captchaService = SpringContextHolder.getBean(CaptchaService.class);
		ResponseModel responseModel = captchaService.get(vo);
		return ServerResponse.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
				.body(BodyInserters.fromValue(objectMapper.writeValueAsString(R.ok(responseModel))));
	}
}

校验逻辑

public class ImageCodeCheckHandler implements HandlerFunction<ServerResponse> {

	private final ObjectMapper objectMapper;

	@Override
	@SneakyThrows
	public Mono<ServerResponse> handle(ServerRequest request) {
		CaptchaVO vo = new CaptchaVO();
		vo.setPointJson(request.queryParam("pointJson").get());
		vo.setToken(request.queryParam("token").get());
		vo.setCaptchaType(CommonConstants.IMAGE_CODE_TYPE);

		CaptchaService captchaService = SpringContextHolder.getBean(CaptchaService.class);
		ResponseModel responseModel = captchaService.check(vo);

		return ServerResponse.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
				.body(BodyInserters.fromValue(objectMapper.writeValueAsString(R.ok(responseModel))));
	}

}