验证用户是不是管理员是不是多余的

来源:7-2 添加分类和更新分类名字功能开发

lovis

2017-11-07

    @RequestMapping("add_category.do")
    @ResponseBody
    public ServerResponse addCategory(HttpSession session,String categoryName,@RequestParam(value = "parentId",defaultValue = "0") int parentId){
        User user = (User)session.getAttribute(Const.CURRENT_USER);
        if(user == null){
            return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),"用户未登录,请登录");
        }
        //校验一下是否是管理员
        if(iUserService.checkAdminRole(user).isSuccess()){
            //是管理员
            //增加我们处理分类的逻辑
            return iCategoryService.addCategory(categoryName,parentId);
        }else{
            return ServerResponse.createByErrorMessage("无权限操作,需要管理员权限");
        }
    }

添加品类的前提是session中用户存在并且是管理员,而判断用户是不是管理员是由UserManagerController完成。

后面这段校验管理员的无论user 是否为 null都不会被执行?!

  1. 如果user != null, 说明已经登录,UserManagerController校验user是不是管理员。无存在意义。

  2.  user == null,存在两种情况

    2.1 用户一开始就未登录

    2.2 session信息过期

    这两种情况在发送add_category.do请求的时候,return status = 10  强制登录。校验管理员代码不会被执行。


写回答

2回答

Geely

2017-11-07

  1. 有意义的,user !=null 不能代表user是管理员

2. 强制登录是登录

简单来说  第一步校验是否登录 第二步校验是否是管理员,只有管理员才能执行。

这里必须考虑纵向越权的问题

寻水的鱼回答的很对


0
1
lovis
真羞耻啊.............我只考虑了后台登录判断是不是管理员,而前台... 自己当了回 纵向越权 反面教材
2017-11-08
共1条回复

寻水的鱼丶

2017-11-07

好像是考虑纵向越权吧,假如用普通用户登录,然后调用这个接口那不就可以有管理员权限了么。。所以说是有存在的必要的。个人见解,还是等老师来回答比较专业

1
1
lovis
谢谢老哥
2017-11-08
共1条回复

从0开始 独立完成企业级Java电商网站服务端开发

前后端分离,数据库接口设计,架构设计,功能开发,上线运维

9476 学习 · 8804 问题

查看课程