• 实现自动登陆和记住用户名功能


    前台页面部分代码展示

    <tr>
       <td colspan="2" style="text-align:center">
           <input type="checkbox" name="remanberUserName" value="1" />记住用户名&nbsp;&nbsp;
           <input type="checkbox" name="autoLogin" value="1" /> 自动登录
       </td>
    </tr>

    后台完整代码展示

    @RequestMapping("/login.do")
        public String loginUser(User user,HttpSession session,HttpServletResponse response,HttpServletRequest request,String remanberUserName,String autoLogin) throws UnsupportedEncodingException {
    
            user=userService.findUser(user);
            session.setAttribute("user",user);
    
            if(user!=null){
    
                    if(user.getState()==1){
    
                        if("1".equals(autoLogin)){
                                Cookie cookieUserName = new Cookie("userName", URLEncoder.encode(user.getUsername(),"utf-8"));
                                cookieUserName.setMaxAge(60*60*24*7);
                                cookieUserName.setPath(request.getContextPath()+"/");
                                response.addCookie(cookieUserName);
                               // session.setAttribute("username",user.getUsername());//判断记住用户名之后,把用户名放在session中,在login.jsp中显示
                                Cookie cookiePassword = new Cookie("password", URLEncoder.encode(user.getPassword(),"utf-8"));
                                cookiePassword.setMaxAge(60*60*20*7);
                                cookiePassword.setPath(request.getContextPath()+"/");
                                response.addCookie(cookiePassword);
    
                        }else if("1".equals(remanberUserName)){
    
                                Cookie cookieUserName = new Cookie("userName", URLEncoder.encode(user.getUsername(),"utf-8"));
                                cookieUserName.setMaxAge(60*60*24*7);
                                cookieUserName.setPath(request.getContextPath()+"/");
                                response.addCookie(cookieUserName);
                               // session.setAttribute("cookieUserName",cookieUserName);
    
                        }
                        return"/index.jsp";
                    }else{
                        request.setAttribute("fail","激活码未激活,请先激活");
                        return "/client/login.jsp";
                    }
            }else{
    
                request.setAttribute("fail","尚未注册,请先注册");
                return "/client/register.jsp";
            }
        }

    实现自动登陆的过程

     @RequestMapping("/myAccount.do")
        public String myAccount(HttpSession session,Model model,HttpServletRequest request,User user) throws UnsupportedEncodingException {
            User session_user= (User) session.getAttribute("user");
            //如果session中有数据,说明已经登陆过,可以进入
            if(session_user!=null){
                return "/client/myAccount.jsp";
            }else{
                //session中没有数据,则看有没有自动登陆,cookies中有无数据
                Cookie[] cookies=request.getCookies();
    
                for(Cookie cookie:cookies){
                    if("userName".equals(cookie.getName())){
                        String username= URLDecoder.decode(cookie.getValue(),"utf-8");
                        user.setUsername(username);
                    }
                    if ("password".equals(cookie.getName())){
                        String password= URLDecoder.decode(cookie.getValue(),"utf-8");
                        user.setPassword(password);
                    }
                }
    
                //解码之后再去查找一遍,看和数据库中的信息是否一致,以防止中途数据修改。
                user=userService.findUser(user);
                //如果能通过cookies中的数据,在数据库中存在,则说明已经自动登陆,可以进入
                if(user!=null){
                    session.setAttribute("user",user);
                    return "/client/myAccount.jsp";
                }else{
                    model.addAttribute("fail","还未登录,请先登录账户");
                    return "/client/login.jsp";
                }
            }
        }
  • 相关阅读:
    常见错误--06.18
    类目-延展-协议
    iOS页面传值-wang
    ios常见的页面传值方式
    delegate和protocol
    沙盒路径及文件 操作
    tableView优化性能
    IOS面试题
    浅谈Runloop
    面试题
  • 原文地址:https://www.cnblogs.com/liuna369-4369/p/10930967.html
Copyright © 2020-2023  润新知