cz_health_day10

项目第十天

项目需求

进行权限控制以及图形报表的生成

权限控制使用spring-security框架进行完成,图形及报表使用ECharts完成

1、权限设置

  • pop文件中导入spring-security-web、spring-security-config坐标
  • 在health_backend工程的web.xml文件中配置用于整合Spring Security框架的 过滤器DelegatingFilterProxy  注意事项:filter标签与filter标签放一起  filter-mapping标签放一起,否则报错,此过滤器的名称固定springSecurityFilterChain
  • 定义SpringSecurityUserService类,实现UserDetailsService 接口重写 loadUserByUsername 返回值是UserDetails     1.通过用户名查找用户,用户不存在就登录失败 2.得到用户对象,通过用的id获得用户的角色 3.当用户角色不为空,再去通过角色的id获取用户的权限   将角色list将这些role与permission进行保存 然后存入UserDetials这个类中,参数包括用户名,用户密码以及list的权限信息
  • spring-security的xml文件配置 配置
    • 1. 静态资源不拦截<security:http security="none" pattern="/js/**"></security:http> 
    • 2.配置登录页面  将csrf设置为不可用
    • 3.配置logout登出设置 
    • 4.配置认证管理器
    • 5. 配置加密对象
    • 6.开启注解方式的权限控制
    • 7.<!--设置在页面可以通过iframe访问受保护的页面,默认为不允许访问-->

      <security:frame-options policy="SAMEORIGIN"></security:frame-options>

  • 进行注解设置 @PreAuthorize("hasAuthority('CHECKITEM_DELETE')")//权限校验 
  • 解决页面对无权限不提示的问题,在axios发送ajax的后面增加 catch方法,表示请求返回失败时,权限不足导致

2、登录成功后再页面显示用户名与登出操作

  • 登录后跳转至main.html页面,触发钩子函数,发送ajax请求,获取用户的账号,用户的登录信息会保存到内存对象中,(Spring security完成认证后,会将当前用户信息保存到框架提供的上下文对象

    User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();)通过获取这个user对象来查找用户的姓名返回至前端显示在页面上

  • 为登出按钮绑定 点击事件,点击后触发logout.do的方法(这个方法是定义在logout标签中的),就可以登出返回至登录页面

3、ECharts 商业级数据图标,百度开源可视化工具

  • 分析需要什么样的图标,找到合适的图表,复制源码 导入html页面,导入echarts.js文件 引入资源
  • 分析页面需要的数据  一个是月份 一个是每个月份对应的数据,这两个值要保持意义对应
  • 页面加载触发事件,异步从后端获取月份的数据,通过calindar来操作时间,获取当前的一年的所有月份,以及每个月份的会员信息量,将数据封装到map集合中返回给前端展示
原文地址:https://www.cnblogs.com/luckysupermarket/p/13706133.html