java代码关于 注册 登录 封装

//封装类Util代码

package com.co.util;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpSession;

import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.co.model.User;


public class LoginUtil {


	// 登录
	public static Map<String, Integer> login(String username, String password, String checkCode, HttpSession session,User user) {
		Map<String, Integer> map = new HashMap<String, Integer>();
		// 从seeion中获取系统生产的验证码
		String code = (String) session.getAttribute("checkCode");
		if (checkCode.equals(code)) {
			// 根据用户输入的用户进行查询

			if (user != null) {
				// 拿用户输入的密码跟数据库中的密码进行比较
				if (MD5Util.verify(MD5Util.md5Hex(password), user.getPassword())) {
					map.put("state", 4); // 登录成功
					session.setAttribute("User", user); // 登录成功之后将用户信息放到session中
				} else {
					map.put("state", 3); // 密码错误
				}
			} else {
				map.put("state", 2); // 用户不存在
			}
		} else {
			map.put("state", 1); // 验证码错误
		}
		return map;
	}

	// 注册
	public static String register(User user, String checkCode, HttpSession session) {
		// 获取验证码
		Object attribute = session.getAttribute("checkCode");
		// 判断验证码错误或为null 返回 在页面进行弹框提示
		if (attribute == null || !checkCode.equals(session.getAttribute("checkCode").toString())) {
			return "ss";
		}
		user.setPassword(MD5Util.generate(MD5Util.md5Hex(user.getPassword())));
		return "success";

	}

	// 修改密码
	public static String updatePassword(String oldPassword, String newPassword, HttpSession session) {
		try {
			User user = (User) session.getAttribute("User");
			if (MD5Util.verify(MD5Util.md5Hex(oldPassword), user.getPassword())) {
				user.setPassword(MD5Util.generate(MD5Util.md5Hex(newPassword)));
			}
			return "state";
		} catch (Exception e) {
			System.out.println(e);
			return "statee";
		}

	}

	// 校验验证码

	public static Map<String, Object> checkCode(String checkCode, HttpSession session) {
		Map<String, Object> map = new HashMap<String, Object>();
		// 系统生成的验证码
		String code = (String) session.getAttribute("checkCode");
		if (code.equals(checkCode)) {
			map.put("valid", true);
		} else {
			map.put("valid", false);
		}
		return map;
	}

	// 注销
	public static String logout(HttpSession session) {
		// 清空session
		session.invalidate();
		return "redirect:/index.jsp";
	}

	// 找回密码
	public static Map<String, Object> forgetPassword(String username, String email, User user) {
		Map<String, Object> map = new HashMap<String, Object>();
		// 生产随机密码
		String newPassword = RandomStringUtils.random(6,"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
		user.setPassword(MD5Util.generate(MD5Util.md5Hex(newPassword)));
		map.put("state", true);
		MailUtil.sendMail("天涯平台系统通知", "您的新密码为:" + newPassword + ",请及时登录,修改密码", user.getEmail());
		return map;

	}

	// 注册时验证用户是否存在
	public static Map<String, Object> queryUserByUsername(String username, User user) {
		Map<String, Object> map = new HashMap<String, Object>();
		if (user == null) {
			map.put("valid", true);
		} else {
			map.put("valid", false);
		}
		return map;
	}

	// 找回密码验证用户是否存在
	public static Map<String, Object> queryUserByUsername2(String username1, User user) {
		Map<String, Object> map = new HashMap<String, Object>();
		if (user != null) {
			map.put("valid", true);
		} else {
			map.put("valid", false);
		}
		return map;
	}
}

//controller控制器调用

package com.co.controller;

import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

import javax.servlet.http.HttpSession;

import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.co.model.permission.Permission;
import com.co.model.user.User;
import com.co.service.PermissionService;
import com.co.service.UserService;
import com.co.util.LoginUtil;
import com.co.util.MD5Util;
import com.co.util.MailUtil;

@Controller
@RequestMapping("user")
public class UserLoginController {

	@Autowired
	private UserService userService;

	@Autowired
	private PermissionService permissionService;

	// 跳转
	@RequestMapping("home")
	private String home() {
		return "home";
	}

	// 登录 没有逻辑基础版  
	/*@RequestMapping("login")
	@ResponseBody
	public Map<String, Integer> login(String username, String password, String checkCode, HttpSession session) {
		User user = userService.queryUserByUserName(username);
		return LoginUtil.login(username, password, checkCode, session, user);
	}*/
	
	//登录  逻辑基础版
	@RequestMapping("login")
	@ResponseBody
	public Map<String, Integer> login(String username, String password, String checkCode, HttpSession session) {
		Map<String, Integer> map = new HashMap<String, Integer>();
		// 从session获取验证码
		String code = (String) session.getAttribute("checkCode");
		if (checkCode.equals(code)) {

			// 根据用户输入的用户进行查询
			User user = userService.queryUserByUserName(username);
			if (user != null) {

				// 解锁账号

				if (user.getErrorCount() != null && user.getErrorCount() >= 3) {
					// 获取账号锁定时间的第二天的凌晨时间
					Calendar c = Calendar.getInstance();
					c.setTime(user.getErrorTime());
					c.add(Calendar.DAY_OF_MONTH, 1);
					c.set(Calendar.HOUR_OF_DAY, 0);
					c.set(Calendar.MINUTE, 0);
					c.set(Calendar.SECOND, 0);
					c.set(Calendar.MILLISECOND, 0);
					if (System.currentTimeMillis() >= c.getTimeInMillis()) {
						user.setErrorCount(0);
						user.setErrorTime(null);
						userService.addUser(user);
					}
				}

				// 判断用户是否锁定
				if (user.getErrorCount() == null || user.getErrorCount() < 3) {

					// 拿用户输入的密码跟数据库中的密码进行比较
					if (MD5Util.verify(MD5Util.md5Hex(password), user.getPassword())) {
						// 判断是否为第一次登录,获取跟当前时间是不是同一天
						if (user.getLoginCount() == null
								|| DateUtils.isSameDay(user.getLoginTime(), new Date()) == false) {
							user.setLoginCount(1);
						} else {
							user.setLoginCount(user.getLoginCount() + 1);
						}
						// 设置登录时间
						user.setLoginTime(new Date());
						userService.addUser(user);
						map.put("state", 4); // 登录成功
						session.setAttribute("User", user); // 登录成功之后将用户信息放到session中

						// 获取该用户的权限菜单

						List<Permission> permissions = permissionService.queryPermissionByUserId(user.getUserId());
						session.setAttribute("permissions", permissions);

					} else {
						// 记录错误次数
						user.setErrorCount(user.getErrorCount() == null ? 1 : user.getErrorCount() + 1);
						user.setErrorTime(new Date());
						userService.addUser(user);

						// 账户被锁定时发送邮件
						if (user.getErrorCount() >= 3) {
							MailUtil.sendMail("希望电影平台系统通知", "您的账号已被锁定,请明日重试!", user.getEmail());
						}

						map.put("state", 3); // 密码错误
					}

				} else {
					map.put("state", 5); // 账号被锁定
				}
			} else {
				map.put("state", 2); // 用户不存在
			}
		} else {
			map.put("state", 1); // 验证码错误
		}
		return map;
	}

	// 注销
	@RequestMapping("logout")
	public String logout(HttpSession session) {
		return LoginUtil.logout(session);
	}

	// 注册
	@RequestMapping("register")
	@ResponseBody
	public String register(User user, String checkCode, HttpSession session) {
		LoginUtil.register(user, checkCode, session);
		userService.addUser(user);
		return "success";

	}

	// 校验验证码
	@RequestMapping("checkCode")
	@ResponseBody
	public Map<String, Object> checkCode(String checkCode, HttpSession session) {
		return LoginUtil.checkCode(checkCode, session);
	}

	// 修改密码
	@RequestMapping("updatePassword")
	@ResponseBody
	public Integer updatePassword(String oldPassword, String newPassword, HttpSession session) {
		User user = (User) session.getAttribute("User");
		LoginUtil.updatePassword(oldPassword, newPassword, session);
		userService.addUser(user);
		return 0;
	}

	// 找回密码
	@RequestMapping("forgetPassword")
	@ResponseBody
	public Map<String, Object> forgetPassword(String username, String email) {
		Map<String, Object> map = new HashMap<String, Object>();
		User user = userService.queryUserByUserName(username);
		LoginUtil.forgetPassword(username, email, user);
		userService.addUser(user);
		map.put("state", true);
		return map;
	}

	// 验证用户是否存在
	@RequestMapping("queryUserByUsername")
	@ResponseBody
	public Map<String, Object> queryUserByUsername(String username) {
		User user = userService.queryUserByUserName(username);
		return LoginUtil.queryUserByUsername(username, user);
	}

	// 找回密码验证用户是否存在
	@RequestMapping("queryUserByUsername2")
	@ResponseBody
	public Map<String, Object> queryUserByUsername2(String username1) {
		User user = userService.queryUserByUserName(username1);
		return LoginUtil.queryUserByUsername2(username1, user);
	}

	// // 验证用户是否存在验证邮箱
	@RequestMapping("checkEmail")
	@ResponseBody
	public Map<String, Object> checkEmail(String username, String userEmail1) {
		User user = userService.queryUserByUserName(username);
		return LoginUtil.checkEmail(username, userEmail1, user);
	}
	

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jq1223

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值