基于springboot的小说网站

本文介绍了一个基于SpringBoot构建的小说网站,利用Shiro框架管理用户权限,未登录用户可阅读,登录后可写小说、添加到书架、评论等。验证码通过Redis存储并设置有效时间,邮件服务使用JavaMailSender发送,支持HTML样式,并使用异步处理减少用户等待。同时,网站对阅读页面进行缓存管理,更新或删除章节时会清理缓存。
摘要由CSDN通过智能技术生成

总体设计:使用shiro框架管理用户权限,未登录的用户只能阅读,注册与登录,登陆后的用户可以写小说,添加小说到书架,对书架的小说进行删除,对小说以及章节发表评论,用户可以删除自己发送的评论及自己小说下的评论。管理员可以设置网站首页的推荐,删除违规的章节,并把章节的备份发送到被删除用户的邮箱。用户在注册时,验证码将使用redis保存,并设置10分钟有效期,同一邮箱24h内只能发送十次验证码。

获取验证码

用户点击获取验证码时,前端将注册的邮箱传入后端,redis的key为注册的邮箱,value为验证码,时间戳,发送的次数,以json格式存放,并设置24小时过期时间。查找redis内是否有该key,如果没有,则为用户首次获取验证码,并发送验证码,将数据存入redis中,如果有,根据时间戳判断发送的间隔是否大于30s,发送的次数是否达到10次,符合条件后更新redis中的验证码,时间戳,发送次数+1

public String getCode(String email) throws MessagingException {
        HashMap<String, String> map = new HashMap<>();
        //判断是否首次获取验证码
        if(redisTemplate.hasKey(email)){
            //非首次获取从redis中拿到信息
            String json = redisTemplate.opsForValue().get(email);
            JSONObject obj = JSON.parseObject(json);
            String time = obj.getString("time");//验证码获取时间
            String num = obj.getString("num");//第几次获取
            int number = Integer.parseInt(num);
            if (number == 10){
                return "验证码发送次数已用尽,请明天再来";
            }
            if ((System.currentTimeMillis()/1000 - Long.parseLong(time))<30){
                return "距离上次验证码发送还不到30s!";
            }
            map.put("code",CodeUtil.code());
            map.put("time", String.valueOf(System.currentTimeMillis()/ 1000));
            number++;
            map.put("num", String.valueOf(number));
            redisTemplate.opsForValue().getAndS
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值