Skip to content

Commit

Permalink
⬆️ 版本升级&代码优化
Browse files Browse the repository at this point in the history
  • Loading branch information
ZHENFENG13 committed Oct 27, 2022
1 parent 2af3d35 commit b356abc
Show file tree
Hide file tree
Showing 8 changed files with 40 additions and 134 deletions.
17 changes: 8 additions & 9 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.7.RELEASE</version>
<version>2.7.5</version>
<relativePath/>
</parent>

Expand All @@ -44,30 +44,29 @@
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
<version>2.2.2</version>
</dependency>
<!-- 验证码 -->
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
<groupId>cn.hutool</groupId>
<artifactId>hutool-captcha</artifactId>
<version>5.8.7</version>
</dependency>
<!-- commonmark core -->
<dependency>
<groupId>com.atlassian.commonmark</groupId>
<artifactId>commonmark</artifactId>
<version>0.8.0</version>
<version>0.17.0</version>
</dependency>
<!-- commonmark table -->
<dependency>
<groupId>com.atlassian.commonmark</groupId>
<artifactId>commonmark-ext-gfm-tables</artifactId>
<version>0.8.0</version>
<version>0.17.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
<scope>runtime</scope>
</dependency>
<dependency>
Expand All @@ -90,4 +89,4 @@
@email [email protected]
@link http://13blog.site
-->
</project>
</project>
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.site.blog.my.core.controller.admin;

import cn.hutool.captcha.ShearCaptcha;
import com.site.blog.my.core.entity.AdminUser;
import com.site.blog.my.core.service.*;
import org.springframework.stereotype.Controller;
Expand Down Expand Up @@ -63,8 +64,8 @@ public String login(@RequestParam("userName") String userName,
session.setAttribute("errorMsg", "用户名或密码不能为空");
return "admin/login";
}
String kaptchaCode = session.getAttribute("verifyCode") + "";
if (StringUtils.isEmpty(kaptchaCode) || !verifyCode.equals(kaptchaCode)) {
ShearCaptcha shearCaptcha = (ShearCaptcha) session.getAttribute("verifyCode");
if (shearCaptcha == null || !shearCaptcha.verify(verifyCode)) {
session.setAttribute("errorMsg", "验证码错误");
return "admin/login";
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.site.blog.my.core.controller.blog;

import cn.hutool.captcha.ShearCaptcha;
import com.site.blog.my.core.controller.vo.BlogDetailVO;
import com.site.blog.my.core.entity.BlogComment;
import com.site.blog.my.core.entity.BlogLink;
Expand Down Expand Up @@ -226,11 +227,8 @@ public Result comment(HttpServletRequest request, HttpSession session,
if (StringUtils.isEmpty(verifyCode)) {
return ResultGenerator.genFailResult("验证码不能为空");
}
String kaptchaCode = session.getAttribute("verifyCode") + "";
if (StringUtils.isEmpty(kaptchaCode)) {
return ResultGenerator.genFailResult("非法请求");
}
if (!verifyCode.equals(kaptchaCode)) {
ShearCaptcha shearCaptcha = (ShearCaptcha) session.getAttribute("verifyCode");
if (shearCaptcha == null || !shearCaptcha.verify(verifyCode)) {
return ResultGenerator.genFailResult("验证码错误");
}
String ref = request.getHeader("Referer");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,51 +1,30 @@
package com.site.blog.my.core.controller.common;

import com.google.code.kaptcha.impl.DefaultKaptcha;
import org.springframework.beans.factory.annotation.Autowired;
import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.ShearCaptcha;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;

/**
* @author 13
* @qq交流群 796794009
* @email [email protected]
* @link http://13blog.site
*/

@Controller
public class CommonController {

@Autowired
private DefaultKaptcha captchaProducer;

@GetMapping("/common/kaptcha")
public void defaultKaptcha(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
byte[] captchaOutputStream = null;
ByteArrayOutputStream imgOutputStream = new ByteArrayOutputStream();
try {
//生产验证码字符串并保存到session中
String verifyCode = captchaProducer.createText();
httpServletRequest.getSession().setAttribute("verifyCode", verifyCode);
BufferedImage challenge = captchaProducer.createImage(verifyCode);
ImageIO.write(challenge, "jpg", imgOutputStream);
} catch (IllegalArgumentException e) {
httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
}
captchaOutputStream = imgOutputStream.toByteArray();
httpServletResponse.setHeader("Cache-Control", "no-store");
httpServletResponse.setHeader("Pragma", "no-cache");
httpServletResponse.setDateHeader("Expires", 0);
httpServletResponse.setContentType("image/jpeg");
ServletOutputStream responseOutputStream = httpServletResponse.getOutputStream();
responseOutputStream.write(captchaOutputStream);
responseOutputStream.flush();
responseOutputStream.close();
httpServletResponse.setContentType("image/png");

ShearCaptcha shearCaptcha= CaptchaUtil.createShearCaptcha(150, 30, 4, 2);

// 验证码存入session
httpServletRequest.getSession().setAttribute("verifyCode", shearCaptcha);

// 输出图片流
shearCaptcha.write(httpServletResponse.getOutputStream());
}
}

Original file line number Diff line number Diff line change
@@ -1,30 +1,24 @@
package com.site.blog.my.core.controller.common;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.web.servlet.error.ErrorViewResolver;
import org.springframework.boot.web.servlet.error.ErrorAttributes;
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.ServletWebRequest;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;


@Controller
public class ErrorPageController implements ErrorController {
public class ErrorPageController implements ErrorViewResolver {

private static ErrorPageController errorPageController;

@Autowired
private ErrorAttributes errorAttributes;

private final static String ERROR_PATH = "/error";

public ErrorPageController(ErrorAttributes errorAttributes) {
this.errorAttributes = errorAttributes;
}
Expand All @@ -35,9 +29,8 @@ public ErrorPageController() {
}
}

@RequestMapping(value = ERROR_PATH, produces = "text/html")
public ModelAndView errorHtml(HttpServletRequest request) {
HttpStatus status = getStatus(request);
@Override
public ModelAndView resolveErrorView(HttpServletRequest request, HttpStatus status, Map<String, Object> model) {
if (HttpStatus.BAD_REQUEST == status) {
return new ModelAndView("error/error_400");
} else if (HttpStatus.NOT_FOUND == status) {
Expand All @@ -46,43 +39,4 @@ public ModelAndView errorHtml(HttpServletRequest request) {
return new ModelAndView("error/error_5xx");
}
}

@RequestMapping(value = ERROR_PATH)
@ResponseBody
public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {
Map<String, Object> body = getErrorAttributes(request, getTraceParameter(request));
HttpStatus status = getStatus(request);
return new ResponseEntity<Map<String, Object>>(body, status);
}

@Override
public String getErrorPath() {
return ERROR_PATH;
}


private boolean getTraceParameter(HttpServletRequest request) {
String parameter = request.getParameter("trace");
if (parameter == null) {
return false;
}
return !"false".equals(parameter.toLowerCase());
}

protected Map<String, Object> getErrorAttributes(HttpServletRequest request, boolean includeStackTrace) {
WebRequest webRequest = new ServletWebRequest(request);
return this.errorAttributes.getErrorAttributes(webRequest, includeStackTrace);
}

private HttpStatus getStatus(HttpServletRequest request) {
Integer statusCode = (Integer) request
.getAttribute("javax.servlet.error.status_code");
if (statusCode != null) {
try {
return HttpStatus.valueOf(statusCode);
} catch (Exception ex) {
}
}
return HttpStatus.INTERNAL_SERVER_ERROR;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
package com.site.blog.my.core;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class MyBlogApplicationTests {

Expand Down
8 changes: 7 additions & 1 deletion upgrade.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
## 更新日志

#### 20221027

* Spring Boot 版本升级至 2.7.5
* MyBatis 版本更新
* 验证码生成逻辑修改

#### 20220104

* 修复一个小bug
* 宣传图更新

#### 20210502

* Spring Boot 版本升级
* Spring Boot 版本升级至 2.3.7-RELEASE
* jqGrid 版本升级

#### 20201016
Expand Down

0 comments on commit b356abc

Please sign in to comment.