【抽奖项目】|第一篇

前言:项目的抽奖系统

项目是使用spring集成session,可以看这个博主的这篇文章

Session详解,学习 Session对象一篇文章就够了_session撖寡情-优快云博客https://blog.youkuaiyun.com/swy2560666141/article/details/129046563

刚刚开始不理解读到这篇文章以后都明白了

1、登录

  1. 第一次使用到Session的请求产生,则创建Session
  2. 结束
  • 浏览器关闭,则失效
  • Session超时,则失效
  • session.setMaxInactiveInterval(seconds);//设置最大有效时间(单位:秒)
  • 手工销毁,则失效
  • session.invalidate();//登录退出,销毁

 用户登录写在session,可以在request中获取,然后使用redis判断密码错误的次数。

    @PostMapping("/login")
    @ApiOperation(value = "登录")
    @ApiImplicitParams({
            @ApiImplicitParam(name="account",value = "用户名",required = true),
            @ApiImplicitParam(name="password",value = "密码",required = true)
    })
    //TODO:任务3.1-登录模块-用户登录
    public ApiResult login(HttpServletRequest request, @RequestParam String account,@RequestParam String password) {
        //先判断账号也没有被锁住
        Integer errortimes = (Integer) redisUtil.get(RedisKeys.USERLOGINTIMES+account);
        if (errortimes != null && errortimes >= 5){
            return new ApiResult(0, "密码错误5次,请5分钟后再登录",null);
        }
        QueryWrapper<CardUser> wrapper = new QueryWrapper<>();
        wrapper.eq("uname",account).eq("passwd",PasswordUtil.encodePassword(password));
        List<CardUser> users = userService.list(wrapper);

        if (users != null && users.size() > 0) {
            CardUser user = users.get(0);
            //信息脱敏,不要将敏感信息带入session以免其他接口不小心泄露到前台
            user.setPasswd(null);
            user.setIdcard(null);
            //获取session
            HttpSession session = request.getSession();
            session.setAttribute("user",user);
            return new ApiResult(1, "登录成功",user);
        } else {
            //错误计数,5次锁定5分钟
            redisUtil.incr(RedisKeys.USERLOGINTIMES+account,1);
            redisUtil.expire(RedisKeys.USERLOGINTIMES+account,60 * 5);
            return new ApiResult(0, "账户名或密码错误",null);
        }
    }

2、退出登录

  @GetMapping("/logout")
    @ApiOperation(value = "退出")
    public ApiResult logout(HttpServletRequest request){
        //TODO:任务3.2-登录模块-用户退出
        HttpSession session = request.getSession();
        if (session != null){
            session.invalidate();
        }
        return new ApiResult(1, "退出成功",null);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值