登录注册模板代码
密碼加密類
//MD5 生成器 public class MD5Utils {public static String md5(String password){//生成一個md5加密器try {MessageDigest md = MessageDigest.getInstance("MD5");//計算MD5 的值md.update(password.getBytes());//BigInteger 將8位的字符串 轉成16位的字符串 得到的字符串形式是哈希碼值//BigInteger(參數1,參數2) 參數1 是 1為正數 0為0 -1為負數return new BigInteger(1, md.digest()).toString(16);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;} }實體類
@Data @AllArgsConstructor @NoArgsConstructor @ApiModel(value = "User對象",description = "用戶或買家信息") public class User {private Integer userId;private String username;private String password;private String nickname;private String realname;private String userImg;private String userMobile;private String userEmail;private String userSex;private Date userBirth;private Date userRegtime;private Date usermodtime;}Dao
public interface UserMapper {//用戶注冊public int insertUser(User user);//按照用戶名查詢用戶public User queryByName(String userName); } <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.pxl.dao.UserMapper"><insert id="insertUser" parameterType="User">insert into users (username,password,user_regtime,user_modtime)values (#{username},#{password},#{userRegtime},#{userModtime})</insert><select id="queryByName" resultType="User" >select * from users where userName=#{userName}</select></mapper>Service
public interface UserService {//用戶注冊public ResultVO userRegister(String name,String pwd);//用戶登錄public ResultVO checkLogin(String name, String pwd); } @Service public class UserServiceImpl implements UserService {@ResourceUserMapper userMapper;/*用戶注冊時,需要考慮一個問題* 當前用戶是否存在,即用戶名是否已經存在* 同一時刻可能有多個用戶正在注冊* 保證注冊時用戶名唯一* 采用事務管理*/@Transactional@Overridepublic ResultVO userRegister(String name, String pwd) {synchronized (this) {//1,根據用戶名查詢,該用戶名是否已經被注冊User user = userMapper.queryByName(name);//2,若該用戶名不存在,則進行保存操作if (user == null) {//加密String Md5Pwd = MD5Utils.md5(pwd);//保存用戶user = new User();user.setUsername(name);user.setPassword(Md5Pwd);user.setUserRegtime(new Date());user.setUsermodtime(new Date());int i = userMapper.insertUser(user);if (i == 1) {//注冊成功return new ResultVO(10001, "注冊成功", null);} else {//注冊失敗return new ResultVO(10002, "注冊失敗", null);}} else {return new ResultVO(10000, "用戶名已存在", null);}}}@Overridepublic ResultVO checkLogin(String name, String pwd) {//1,根據賬號查詢信息User user = userMapper.queryByName(name);//2,判斷if(user == null){//用戶名不存在return new ResultVO(10001,"用戶名不存在",null);}else{//3.對輸入的密碼進行加密String Md5Pwd = MD5Utils.md5(pwd);//使用加密后的密碼和user中的密碼進行比對if(user.getPassword().equals(Md5Pwd)){//驗證成功return new ResultVO(10000,"登錄成功",user);}else{//驗證失敗return new ResultVO(10002,"密碼錯誤",null);}}} }Controller
@RestController @RequestMapping("/user") @Api(value = "提供用戶的登錄和注冊接口",tags="用戶管理") public class UserController {@ResourceUserService userService;@ApiOperation("用戶登錄接口")@ApiImplicitParams({@ApiImplicitParam(dataType = "string",name = "username",value = "用戶登錄賬號",required = true),@ApiImplicitParam(dataType = "string",name="password",value = "用戶登陸密碼",required = true)})@GetMapping("/login") //查詢是GETpublic ResultVO login(@RequestParam("username") String name,@RequestParam(value = "password") String pwd){ResultVO resultVO = userService.checkLogin(name,pwd);return resultVO;}@ApiOperation("用戶注冊接口")//如果所需要的參數是對象類型的話,就不需要在這里寫注解,直接去對象的類里面寫// @ApiImplicitParam(name = "用戶信息",required = true)//參數是對象類型的時候,有些可以不寫,但是實體類需要引入swagger依賴@ApiImplicitParams({@ApiImplicitParam(dataType = "string",name = "username",value = "用戶登錄賬號",required = true),@ApiImplicitParam(dataType = "string",name="password",value = "用戶登陸密碼",required = true)})@PostMapping("/register")//添加是POSTpublic ResultVO register(String name,String pwd){ResultVO resultVO = userService.userRegister(name,pwd);return resultVO;} }測試
http://localhost:8080/doc.html
總結
- 上一篇: 米思齐学习例程(九):sin cos
- 下一篇: 树的知识总结