Skip to content

Commit fc53e4c

Browse files
committed
🐌优化了一些功能
1 parent 86ae47e commit fc53e4c

File tree

7 files changed

+102
-338
lines changed

7 files changed

+102
-338
lines changed

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,15 @@
2828
[Core版](https://hellohao.cn):开源版的基础上增加`Backblaze(B2)` 并且可`同个对象存储商家`可开多个存储源(可添加至90+存储源)
2929

3030

31-
### 更新日志 `20230622`
31+
### 更新日志 `20230918`
3232

3333
- 修复首页批量复制窗点击复制报错
34-
- 优化画廊分享复制分享信息时网址和提示字符的分割,以防被encode
35-
- 修复选择筛选框表单内容后,不检索也会筛选的异常情况
36-
- 筛选条件添加时间倒序/顺序、文件大小倒序/顺序
37-
- 优化用户登录账号支持邮箱/用户名方式登录
38-
- 修复了移动端web页面首页退出按钮无反应问题
39-
- 优化默认的站点logo展示逻辑,解决进入页面瞬间显示默认logo的问题
40-
- 强化图像链接转存功能,支持防盗链地址转存
34+
- 调整菜单个人相册名字为相册空间
35+
- 调整首页UI宽度
36+
- 优化代码未激活账号登录时提示重新激活
37+
- docker-compose方式部署添加数据库用户名配置项
38+
- 修改拦截器写入响应数据时逻辑
39+
- 优化图像链接转存功能
4140

4241

4342
[^_^]: 程序宣传视频:[自制宣传视频](https://www.bilibili.com/video/BV11r4y1y7mH/)
@@ -174,6 +173,7 @@
174173
[^_^]: ![站点设置](http://img.wwery.com/Hellohao/n5zXistG.png)
175174

176175
### 桌面客户端(win/mac)
176+
> 获取地址:[官网获取](https://www.hellohao.cn/app)
177177
178178
> `开源版`/`Core版` 都可以使用
179179
> ![桌面客户端软件](https://upload.cc/i1/2022/07/13/5W8Pxh.png)

src/main/java/cn/hellohao/auth/filter/SubjectFilter.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
import org.apache.shiro.authc.UsernamePasswordToken;
1111
import org.apache.shiro.subject.Subject;
1212
import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
13+
1314
import javax.servlet.ServletRequest;
1415
import javax.servlet.ServletResponse;
1516
import javax.servlet.http.HttpServletRequest;
1617
import javax.servlet.http.HttpServletResponse;
18+
import java.io.PrintWriter;
1719

1820
/**
1921
* @author Hellohao
@@ -139,11 +141,16 @@ protected boolean onAccessDenied(ServletRequest request, ServletResponse respons
139141
info = "用户未找到";
140142
}
141143
System.err.println("拦截器False-"+info);
142-
response.setContentType("application/json;charset=UTF-8");
143-
final JSONObject jsonObject = new JSONObject();
144+
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
145+
httpServletResponse.setStatus(HttpServletResponse.SC_OK);
146+
httpServletResponse.setCharacterEncoding("UTF-8");
147+
httpServletResponse.setContentType("application/json");
148+
PrintWriter writer = httpServletResponse.getWriter();
149+
JSONObject jsonObject = new JSONObject();
144150
jsonObject.put("code",this.CODE);
145151
jsonObject.put("info",info);
146-
response.getWriter().write(jsonObject.toJSONString());
152+
writer.write(jsonObject.toJSONString());
153+
writer.flush();
147154
} catch (Exception e) {
148155
System.out.println("返回token验证失败403请求,报异常了");
149156
}

src/main/java/cn/hellohao/auth/shiro/ShiroConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public ShiroFilterFactoryBean shiroFilterFactoryBean(@Qualifier("defaultWebSecur
3131
filterMap.put("/verifyCode","anon");
3232
filterMap.put("/verifyCodeForRegister","anon");
3333
filterMap.put("/verifyCodeForRetrieve","anon");
34+
filterMap.put("/verifyCodeFortowSendEmail","anon");
3435
filterMap.put("/api/**","anon");
3536
filterMap.put("/user/**","anon");
3637
filterMap.put("/ota/**","anon");

src/main/java/cn/hellohao/controller/IndexController.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class IndexController {
4747
@RequestMapping(value = "/")
4848
public String Welcome(Model model, HttpServletRequest httpServletRequest) {
4949
model.addAttribute("name", "服务端程序(开源版)");
50-
model.addAttribute("version", "20230622");
50+
model.addAttribute("version", "20230918");
5151
model.addAttribute("ip", GetIPS.getIpAddr(httpServletRequest));
5252
model.addAttribute("links", "https://github.com/Hello-hao/tbed");
5353
return "welcome";
@@ -320,6 +320,29 @@ public Msg verifyCodeForRetrieve() {
320320
}
321321
}
322322

323+
@PostMapping(value = {"/verifyCodeFortowSendEmail","/wechat/verifyCodeFortowSendEmail"})
324+
@ResponseBody
325+
public Msg verifyCodeFortowSendEmail() {
326+
Msg msg = new Msg();
327+
try {
328+
ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(90, 35, 2, 2);
329+
// 自定义验证码内容为四则运算方式
330+
captcha.setGenerator(new MathGenerator(1));
331+
String code = getVerifyCodeOperator(captcha.getCode());
332+
String uid = UUID.randomUUID().toString().replace("-", "").toLowerCase();
333+
iRedisService.setValue("verifyCodeFortowSendEmail_"+uid,code);
334+
JSONObject jsonObject = new JSONObject();
335+
jsonObject.put("codeKey",uid);
336+
jsonObject.put("codeImg",captcha.getImageBase64());
337+
msg.setData(jsonObject);
338+
return msg;
339+
} catch (Exception e) {
340+
e.printStackTrace();
341+
msg.setCode("500");
342+
return msg;
343+
}
344+
}
345+
323346
public static String getVerifyCodeOperator(String str) {
324347
int a = Integer.valueOf(str.substring(0, 1));
325348
String yxf = str.substring(1, 2);

src/main/java/cn/hellohao/controller/UserController.java

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import org.apache.shiro.authc.UnknownAccountException;
1717
import org.apache.shiro.authc.UsernamePasswordToken;
1818
import org.apache.shiro.subject.Subject;
19+
import org.slf4j.Logger;
20+
import org.slf4j.LoggerFactory;
1921
import org.springframework.beans.factory.annotation.Autowired;
2022
import org.springframework.stereotype.Controller;
2123
import org.springframework.ui.Model;
@@ -44,6 +46,7 @@ public class UserController {
4446
private SysConfigService sysConfigService;
4547
@Autowired
4648
IRedisService iRedisService;
49+
private Logger logger = LoggerFactory.getLogger(UserController.class);
4750

4851
@PostMapping("/register")
4952
@ResponseBody
@@ -143,6 +146,57 @@ public void run() {
143146
return msg;
144147
}
145148

149+
@PostMapping(value = {"/validateEmail","/wechat/validateEmail"})
150+
@ResponseBody
151+
public Msg validateEmail(HttpServletRequest httpServletRequest,@RequestParam(value = "data", defaultValue = "") String data) {
152+
Msg msg = new Msg();
153+
try {
154+
JSONObject jsonObj = JSONObject.parseObject(data);
155+
String email = jsonObj.getString("email");
156+
String towSendEmailCode = jsonObj.getString("towSendEmailCode");
157+
Object verifyCodeFortowSendEmail =iRedisService.getValue("verifyCodeFortowSendEmail_"+httpServletRequest.getHeader("verifyCodeFortowSendEmail"));
158+
User u = new User();
159+
u.setEmail(email);
160+
User user = userService.getUsers(u);
161+
if(user.getIsok()!=0){
162+
msg.setInfo("不知细叶谁裁出,二月春风似剪刀");
163+
return msg;
164+
}
165+
if(null==verifyCodeFortowSendEmail){
166+
msg.setCode("4035");
167+
msg.setInfo("验证码已失效,请重新弄获取。");
168+
return msg;
169+
}else if(null==towSendEmailCode){
170+
msg.setCode("4036");
171+
msg.setInfo("验证码不能为空。");
172+
return msg;
173+
}
174+
if((verifyCodeFortowSendEmail.toString().toLowerCase()).compareTo((towSendEmailCode.toLowerCase()))==0){
175+
//注册完发激活链接
176+
final Confdata dataJson = confdataService.selectConfdata("config");
177+
JSONObject confdata = JSONObject.parseObject(dataJson.getJsondata());
178+
EmailConfig emailConfig = emailConfigService.getemail();
179+
Thread thread = new Thread() {
180+
public void run() {
181+
Integer a = NewSendEmail.sendEmail(emailConfig,user.getUsername(), user.getUid(), user.getEmail(),confdata);
182+
}
183+
};
184+
thread.start();
185+
msg.setInfo("邮件已发送,请注意查收邮箱尽快激活账户(如果没收到,请检查垃圾邮件)");
186+
}else{
187+
msg.setCode("110408");
188+
msg.setInfo("验证码不正确");
189+
return msg;
190+
}
191+
192+
}catch (Exception e){
193+
logger.error("报错位置:/validateEmail",e);
194+
msg.setCode("500");
195+
msg.setInfo("邮件发送失败");
196+
}
197+
return msg;
198+
}
199+
146200
@PostMapping("/login")//new
147201
@ResponseBody
148202
public Msg login(HttpServletRequest httpServletRequest,@RequestParam(value = "data", defaultValue = "") String data) {
@@ -184,7 +238,8 @@ public Msg login(HttpServletRequest httpServletRequest,@RequestParam(value = "da
184238
User user = (User) SecurityUtils.getSubject().getPrincipal();
185239
if(user.getIsok()==0){
186240
msg.setInfo("你的账号暂未激活");
187-
msg.setCode("110403");
241+
msg.setData(user.getEmail());
242+
msg.setCode("110402");
188243
return msg;
189244
}
190245
if(user.getIsok()<0){

0 commit comments

Comments
 (0)