登录注册模板代码

密码加密类

//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 mapper
        PUBLIC "-//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 {

    @Resource
    UserMapper userMapper;


    /*用户注册时,需要考虑一个问题
    * 当前用户是否存在,即用户名是否已经存在
    * 同一时刻可能有多个用户正在注册
    * 保证注册时用户名唯一
    * 采用事务管理
    */
    @Transactional
    @Override
    public 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);
            }

        }
    }

    @Override
    public 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 {

    @Resource
    UserService userService;


    @ApiOperation("用户登录接口")
    @ApiImplicitParams({
            @ApiImplicitParam(dataType = "string",name = "username",value = "用户登录账号",required = true),
            @ApiImplicitParam(dataType = "string",name="password",value = "用户登陆密码",required = true)
    })
    @GetMapping("/login") //查询是GET
    public 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")//添加是POST
    public ResultVO register(String name,String pwd){
        ResultVO resultVO = userService.userRegister(name,pwd);
        return resultVO;
    }
}

测试

http://localhost:8080/doc.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值