1、登录接口分为(密码登陆,验证码登录,修改密码)。
密码登陆:首先我们需要判断的是手机号,手机号码分为二种情况,一种是手机号码不能为空,另一种是手机号码不为空,不为空的情况下我么就需要去校验手机号的合法不(^1[345678]\\d{9}$)这就需要自己写一个方法来校验了。接下来就是密码的校验,需要自己手动写一个方法来校验。要是手机号、密码都校验完毕,就能直接调研登录的方法登录。用户登录之后我们需要将其信息存储到缓存中,这样就避免了重复登录。主要实现的代码如下:
controller:
/**
* 密码登陆
* @param phone 手机号码
* @param password 密码
* @return
*/
@RequestMapping(value = "/PassLogin.json", method = RequestMethod.POST)
@ApiOperation(value = "密码登陆接口")
@ResponseBody
public String loginByPassword(
@ApiParam(required = true, value = "手机号码") @RequestParam("phone")String phone,
@ApiParam(required = true, value = "密码") @RequestParam("password") String password) {
//先判断手机号不能为空
if(StringUtils.isEmpty(phone)){
return ApiResult.error("手机号为空");
}else {
appUserService.checkPhone(phone);
}
//自定义一个方法校验密码
appUserService.validPassword(password);
AppUser user = appUserService.loginByPassword(phone, password);
//取出登陆的信息存储到APIPrincipal实体中
APIPrincipal principal = APIPrincipal.of(user);
//最终将这些字段存到缓存中
this.redisService.save(principal.getCacheKey(),principal);
return ApiResult.success(principal);
}
service实现类:
@Override
//手机密码登陆,密码的校验
public boolean validPassword(String password) {
String reg = "^\\w{6,16}$";
boolean res = password.matches(reg);
if(res == false){
throw new GeneralException("密码格式错误,请输入6-16字符");
}
return res;
}
@Override
public boolean checkPhone(String phone) {
String pho="^1[345678]\\d{9}$";
boolean ph=phone.matches(pho);
if(ph==false