学校课程设计——OA系统

1 篇文章 0 订阅
1 篇文章 0 订阅

下载地址: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","/");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值