伙伴匹配(后端)-- 查询,删除用户,用户注销接口开发


写接口的流程
先做设计 代码实现 持续优化(复用代码,提取公共逻辑,/常量)

代码设计

查询用户

需要注意的地方

1.请求:查询用户用get请求(无请求体)
2.必须要鉴权:只有管理员可以查询和删除,更新用户
3.为啥是否是管理员要设置一个常量呢?1(ADMIN_ROLE) 0 (DEFAULT_ROLE),增强可读性(个人理解),不然写user.getRole() == 1 可读性不高
4.session失效时间配置(默认30分钟)
通俗点说就是设置一个过期登录时间

# 设置session登录态超时时间为24小时
session:
  timeout: 86400

为什么要设置session失效

  • 用户量很大之后,Session对象相应的也要创建很多。如果一味创建不释放,那么服务器端的内存迟早要被耗尽。
  • 客户端关闭行为无法被服务端直接侦测,或者客户端较长时间不操作也经常出现,类似这些的情况,就需要对session的时限进行设置了

5.过滤掉返回给前端的信息:密码等加密信息(利用java8的map函数式编程可以丝滑过滤)
6.业务逻辑过于简单时,可以直接在controller层写业务,看人下菜嘛

接口代码实现

    @GetMapping("/search")
    public List<User> searchUser(String username,HttpServletRequest request){
        if(!isAdmin(request)){
            return new ArrayList<>();
        }
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        if(StringUtils.isNotBlank(username)){
            queryWrapper.like("username",username);
        }
        return userService.list(queryWrapper);
    }

删除用户

接口代码实现

    /**
     * 删除用户
     */
    @PostMapping("/delete")
    public boolean deleteUser(@RequestBody Long id,HttpServletRequest request){
           if(id < 0 || !isAdmin(request)){
               return false;
           }
           return userService.removeById(id);
    }

    /**
     * 是否是管理员
     */
    public boolean isAdmin(HttpServletRequest request){
        Object userobj = request.getSession().getAttribute(UserConstant.USER_LOGIN_STATE);
        User user = (User) userobj;
        if(user == null || user.getUserRole() != UserConstant.ADMIN_ROLE){
            return false;
        }
        return true;
    }

用户注销

即退出登录功能,与删除用户区分开,删除用户是将用户在数据库中逻辑删除,注销用户是移除用户登录态

request.getSession().removeAttribute(USER_LOGIN_STATE);
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值