一、后端登录逻辑,检测账户密码是否合法及密码输入是否正确
视频链接:
网址:
第三节:【视频】后端登录逻辑,检测账户密码是否合法及密码输入是否正确视频链接:-CSDN博客
从5.1开始
这是一个Java方法,名为doLogin,接收两个参数:userAccount(用户账号)和userPassword(用户密码)。返回值类型为Yupi1。
public Yupi1 doLogin(String userAccount, String userPassword) { // 在这里实现登录逻辑 }
5.1 本人效果图:
/**
*
* @param userAccount 用户账户
* @param userPassword 用户密码
* @return 脱敏后的用户信息
*/
Yupi1 doLogin(String userAccount,String userPassword);
5.3 开始
此处直接顺着敲击
5.7 跑完了一部分
对应的代码步骤如下:
引用日志:写出错误
将在两个函数中都用到的变量放在最外面
手写代码如下:
// 1.校验 账户、密码、校验码 是否包含任何真空值(包含空格或空值)
// if (true 里面任意一个字段:包含空格或空值) return -1; 就失败了
if(StringUtils.isAnyBlank(userAccount,userPassword))
{
return null;
}
if (userAccount.length() < 4)
{
return null;
}
if (userPassword.length() < 8 )
{
return null;
}
// 账户不能包含特殊字符
// m.find();//返回true 输入的账户有 特殊字符,需重新输入
String validPattern = "[`~!@#$%^&*()+=|{}':;',\\\\[\\\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
Matcher matcher = Pattern.compile(validPattern).matcher(userAccount);
if (matcher.find())
{
return null;
}
// 3.对密码进行加密(密码千万不要直接以明文存储到数据库中)
// 写代码前,已测试
/**
* 在本项目,test 文件夹下,UserCenterApplicationTests 里面书写代码,运行测试的
*
* @Test
* void testDigest() throws NoSuchAlgorithmException{
* String newPassword = DigestUtils.md5DigestAsHex(("abcd" + "mypassword").getBytes());
* System.out.println(newPassword);
* }
*
* 运行成功 输出为:(16进制)【可变】78e3504a70116aa7474d614b517809c6
*
*/
String encryptPassword = DigestUtils.md5DigestAsHex((sAlt + userPassword).getBytes());
//查询用户是否存在,以及判断密码是否等于加密后的算法
QueryWrapper<Yupi1> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("userAccount",userAccount);
queryWrapper.eq("userPassword",encryptPassword);
Yupi1 yupi1 = yupi1Mapper.selectOne(queryWrapper);
if (yupi1 == null) {
log.info("user Login failed, userAccount cannot match userPassword");
return null;
}
long count = yupi1Mapper.selectCount(queryWrapper);
return null;