学校课程设计——OA系统

下载地址:OA系统


技术栈

  • SpringBoot
  • Mybatis
  • JWToken
  • Mysql
  • Redis

功能模块

  • 登录模块:
    1.基本账号密码加密校验登录。
    2.生成JWToken,存入Session,提供之后接口访问校验。
  • 权限验证模块:
    1.拦截器拦截每个访问的接口并校验token,校验成功放行,失败重新登录。
  • 业务CRUD模块:
    1.获取和校验参数方式和登录基本一致,业务内部全都通过Mybatis注解方式实现。
  • 工具模块:
    1.通过POI依赖封装ExcelUtils的工具类,实现Excel表的导出。

遇到问题和解决措施

  • 1、Excel导出页面数据格式错误问题及解决方法
    解决措施:数据库查询字段过多,修改限制查询字段即可。
  • 2、权限验证方式问题及解决方法
    解决措施:查询CSDN等博客,最后采用拦截器方式拦截访问接口进行权限校验。

部分核心程序

  • 登录模块
 		// 1. 获取参数
        try {
            Username = request.getParameter("Name");
            Password = request.getParameter("Password");
        } catch (Exception e) {
            request.getRequestDispatcher("web/login.jsp").forward(request, response);
        }

        // 2.加密
        String Md5StrPassword = DigestUtils.md5DigestAsHex(Password.getBytes());

        // 3.验证登录 查询权限 返回数据
        employee = employeeMapper.login(Username, Md5StrPassword);
        try {
            if (employee.getEid() != 0) {
                List<String> Soucres = getSoucres();
                String token = JWToken.getToken(employee);
                // token 存入 cookice
                Cookie cookie = new Cookie("token", token);
                cookie.setMaxAge(24 * 60 * 60 * 1000);
                response.addCookie(cookie);
                request.setAttribute("token", token);
                request.setAttribute("Soucres", Soucres);
                request.setAttribute("employee", employee);
                request.getRequestDispatcher("web/index.jsp").forward(request, response);
            } else {
                request.getRequestDispatcher("web/login.jsp").forward(request, response);
            }
        } catch (Exception e){
            request.getRequestDispatcher("web/login.jsp").forward(request, response);
        }
  • 拦截器
	// 从请求头中获取jwtoken 进行校验
   public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception  {
        String token="";
        try {
            token = request.getCookies()[1].getValue();
        } catch (Exception e) {
            response.sendRedirect("/");
            return false;
        }
        if (token.equals("")){
            response.sendRedirect("/");
            return false;
        } else if (JWToken.verity(token)) {
            return true;
        }
        return false;
    }
public void addInterceptors(InterceptorRegistry registry) {

        // 注册IpInterceptor拦截器
        InterceptorRegistration restRegistration = registry.addInterceptor(paramRestInterceptor());
        // 所有路径都被拦截
        restRegistration.addPathPatterns("/*");
        //添加不拦截路径
        restRegistration.excludePathPatterns("/login","/");
    }
posted @ 2020-12-27 09:30  Kailinymq  阅读(56)  评论(0)    收藏  举报