zoukankan      html  css  js  c++  java
  • 办公自动化项目从无到有-第二篇登录注册

    1.首先页面效果为

     2.登录页面的显示

    @RequestMapping(value="logins",method=RequestMethod.GET)
    public String login(){
    return "login/login";
    }
    

    3.服务端登录检查

    @RequestMapping(value="logins",method = RequestMethod.POST)
    public String loginCheck(HttpSession session,HttpServletRequest req,Model model) throws UnknownHostException{
      String userName=req.getParameter("userName").trim();
      String password=req.getParameter("password");
      String ca=req.getParameter("code").toLowerCase();
      String sesionCode = (String) req.getSession().getAttribute(CAPTCHA_KEY);//对比生成验证码的session中
      model.addAttribute("userName", userName);
    //验证码比对 if(!ca.equals(sesionCode.toLowerCase())){ System.out.println("验证码输入错误!"); model.addAttribute("errormess", "验证码输入错误!"); req.setAttribute("errormess","验证码输入错误!"); return "login/login"; }
    //用户信息查找 User user=uDao.findOneUser(userName, password); if(Objects.isNull(user)){ model.addAttribute("errormess", "账号或密码错误!"); return "login/login"; }
    //用户状态校验 if(user.getIsLock()==1){ model.addAttribute("errormess", "账号已被冻结!"); return "login/login"; } Object sessionId=session.getAttribute("userId");
    //重复登录情形判断 if(sessionId==user.getUserId()){ model.addAttribute("hasmess", "当前用户已经登录了;不能重复登录"); session.setAttribute("thisuser", user); return "login/login"; }else{ session.setAttribute("userId", user.getUserId()); Browser browser = UserAgent.parseUserAgentString(req.getHeader("User-Agent")).getBrowser(); Version version = browser.getVersion(req.getHeader("User-Agent")); String info = browser.getName() + "/" + version.getVersion(); String ip=InetAddress.getLocalHost().getHostAddress(); /*新增登录记录*/ ulService.save(new LoginRecord(ip, new Date(), info, user)); } return "redirect:/index"; }

     这个登录过程并没有应用到安全框架,在后期改版时会加上shiro。

  • 相关阅读:
    Quartz中时间表达式的设置-----corn表达式
    怎样使用SetTimer MFC 够具体
    MySQL server version for the right syntax to use near 'type=InnoDB' at line 1
    Oracle 11g client的安装和配置。
    VC++ CopyFile函数使用方法
    怎样将程序猿写出来的程序打包成安装包(最简单的)
    一分钟制作U盘版BT3
    xml文件格式例如以下
    关于概率性事件的产品性能和客户体验讨论
    RapeLay(电车之狼R)的结局介绍 (隐藏结局攻略)
  • 原文地址:https://www.cnblogs.com/cainame/p/11713274.html
Copyright © 2011-2022 走看看