用户登录

本段代码的前提是:同一用户只能在一处登录并且同一session只能用一个用户登录,浏览器刷新时用户直接进入登录主页

Spring MVC  controller代码:

 

  /**
     * <用户登录>
     * <实现用户登录的控制>
     * @param request 请求对象
     * @return
     * @see [类、类#方法、类#成员]
     */
    @RequestMapping("/login")
    public ModelAndView login(HttpServletRequest request)
    {
        try
        {
            String loginID = request.getParameter("userLoginID");
            String pwd = request.getParameter("userPwd");
            if (null == loginID || null == pwd)
            {
                request.setAttribute("msg", ApErrorInfo.getApManageErrorInfo("login_fail"));
                return new ModelAndView("login");
            }
            else
            {
                UserInfo user = userService.login(loginID, pwd);
                if (null != user)
                {
                    //获取session,并从session里面获取用户
                    HttpSession session = request.getSession();
                    UserInfo usr = (UserInfo)session.getAttribute("user");
                    
                    //如果用户为空:标识session只有一个用户登录(同一个session不能两个用户登录)
                    if (usr == null)
                    {
                        //判断该用户是否在别处登录,true表示没有登录,false标识已经在别处登录
                        boolean bool = userService.padlockUserById(user.getUserID());
                        if (bool)
                        {
                            //获取用户ID并把用户放到session中
                            String userID = user.getUserID();
                            session.setAttribute("user", user);
                            
                            // 应用程序上下文
                            ServletContext ctx = request.getServletContext();
                            ctx.setAttribute(userID, session);
                            
                            return new ModelAndView("index");
                        }
                        else
                        {
                            request.setAttribute("msg", ApErrorInfo.getApManageErrorInfo("login_repeat"));
                            return new ModelAndView("login");
                        }
                    }
                    else if (usr.getUserID().equals(user.getUserID()))
                    {
                        return new ModelAndView("index");
                    }
                    else
                    {
                        request.setAttribute("msg", ApErrorInfo.getApManageErrorInfo("login_fail_session"));
                        return new ModelAndView("login");
                    }
                }
                else
                {
                    request.setAttribute("msg", ApErrorInfo.getApManageErrorInfo("login_fail"));
                    return new ModelAndView("login");
                }
            }
        }
        catch (Exception e)
        {
            logger.error(Global.LOG_EXCEPTION_NAME, e);
            request.setAttribute("msg", ApErrorInfo.getApManageErrorInfo("login_fail"));
            return new ModelAndView("login");
        }
    }

 

service 给用户加锁代码:

 

 @Override
    public boolean padlockUserById(String userID)
    {
        //根据用户ID查询,0未锁定状态,1锁定状态
        Integer userLock = userDao.getUserLockById(userID);
        if (userLock != null)
        {
            if (userLock == 0)
            {
                userDao.updateUserLockById(1, userID);
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            userDao.updateUserLockById(1, userID);
            return true;
        }
    }

 

MyBatis 配置文件:

根据用户名和密码查找用户:

<select id="login" resultType="user">
		<![CDATA[ 
		     select 
		      u.userID,
		      u.loginID,
		      u.pwd,
		      u.realName,
		      u.birthday,
		      u.phone,
		      u.telPhone,
		      u.sex,
		      r.roleID,
		      r.roleName,
		      r.roleRank,
		      u.remark
		    from userinfo u, role r
		    where u.roleID = r.roleID and u.loginID = #{0} and u.pwd = #{1}
	    ]]>
	</select>

 

根据用户ID给用户加锁:

 

<update id="updateUserLockById">
		<![CDATA[ 
			update userinfo set userLock = #{0} where userID = #{1}
		]]>
	</update>

 

查找用户是否加锁:

 

<select id="getUserLockById" resultType="int" parameterType="string">
		<![CDATA[ 
		     select userLock from userinfo where userID = #{userID}
	    ]]>
	</select>

 

用户加锁是为了防止一个用户多处登录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值