采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
如果是从商品管理页改shopid进去,就获取不到店铺信息
如果是店铺信息页里面改shopid,就能获取到了不是该用户的店铺信息了? 所以这个店铺的验证是生效了嘛?这个shopid不是该用户下的店铺
同学好,这里表述看起来有点绕,我总结一下是在自己的某些页面里面能通过修改店铺id看到他人的店铺信息,而有些页面不行吗?如果是这样的话,看看是不是有的页面请求被拦截器排除了导致没去做权限校验?
也差不多是这个意思了吧,如果是从商品管理页改了id,虽然没什么变化,商品信息、商品管理、类别管理还在,但是点击商铺信息进去是获取不到商店信息,这个拦截器生效了,就是从第一张图片改了id再点击到第二张图片,如果是在商店信息页里面改了id,就能获取到别人的商铺信息,也就能改别人的了,就是在第三张图片直接改id,断点调试发现在商店信息页改id,就是在第三页改id,在拦截器上Shop currentShop = (Shop) request.getSession().getAttribute("currentShop");获取到的店铺id并不是修改后的id还是修改之前的id,比如说点击id=10的店铺进来,在图三把id改为1,而在 从session中获取当前选择的店铺id还是10,而在执行了shopadmin/getshopbyid方法后Long shopId = HttpServletRequestUtil.getLong(request, "shopId");获取前端传来的id就是1,就能查看别人店铺的信息了
确实有这样的一个小bug,咱们程序的权限控制做得比较简单,不过也仅限能看到别人的店铺信息,但是应该是修改不了的。如果想精准控制的话,可以在获取到店铺信息的时候,取出对应店铺的店家或者雇员信息,然后对比一下和session里面的本人信息是否一致,不一致则拒绝
可以修改的,我把店铺的拦截器搬来/getshopid这个路由下再验证一次就不能查看了,老师,本来是想Shop shop = shopService.getByShopId(shopId);通过shopId查出来的shop实体再通过shop.getOwner().getUserId();获取店铺用户的id,再和当前session里的用户id是否一致,不一致就返回false,然而查出来的Owner=null,这是为什么?
登录后可查看更多问答,登录/注册
SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需
2.0k 47
1.9k 41
2.5k 40
1.8k 39
1.5k 37