黑马程序员Java项目实战《瑞吉外卖》,轻松掌握springboot + myb
2023-07-26 23:05 作者:风落windfall | 我要投稿

正在学习的小伙伴们看过来
这个项目有一个很严重的bug,就是前台用户(点餐页面)登录后,后台用户(管理页面)可以绕过登录直接访问后台页面了,原因是LoginCheckFilter登录过滤类只针对用户登录进行检查(检查session里面有没有id),只要有用户登录成功那么session里面就会有用户id,那么处于同一session的其他用户便可以绕过登录访问另一方的页面了,换句话说:如果在一个浏览器登录了前台或后台,那么还想同时访问后台或前台,必须更换浏览器,根本原因是同一个浏览器共享一个session
下面是解决方案:
1、更换不同浏览器访问前/后台页面(无视bug)
2、增加前台或后台访问的baseUrl前缀,如后台的请求统一添加"/api",这样可以在过滤器类里面通过request.getRequestURI/getContextPath/getServletPath等方式获取请求路径参数,通过检查是否有“api”字符串判断是前台还是后台用户发的请求
3、使用无状态token代替有状态的session,不过鉴于此项目是单体项目,前后端不分离,使用token不是首选方案
综上,如果回答有错欢迎佬们指正