个人网站设计图片,个人怎么做一个网站,网站备案到哪里,深圳展示型网站建设项目训练营第二天
用户登录逻辑
1、账户名不少于4位 2、密码不少于8位 3、数据库表中能够查询到账户、密码 4、密码查询时用同样加密脱敏处理手段处理后再和数据库中取出字段进行对比#xff0c;如果账户名未查询到#xff0c;直接返回null 5、后端设置相应的脱敏后用户的s…项目训练营第二天
用户登录逻辑
1、账户名不少于4位 2、密码不少于8位 3、数据库表中能够查询到账户、密码 4、密码查询时用同样加密脱敏处理手段处理后再和数据库中取出字段进行对比如果账户名未查询到直接返回null 5、后端设置相应的脱敏后用户的session值方便下一次访问时能够更快的到用户数据。
代码如下
public User UserLogin(String userAccount, String password, HttpServletRequest request) {if (StringUtils.isAnyBlank(userAccount, password)) {return null;}if (userAccount.length() 4) {return null;}if (password.length() 8) {return null;}Pattern compile Pattern.compile(.*[[ _~!#$%^*()|{}:;,\\[\\]./?~#%……*——|{}【】‘”“’。、]|\\n|\\r|\\t].*);Matcher matcher compile.matcher(userAccount);if (matcher.matches()) {return null;}String entryPassword DigestUtils.md5Hex(SALT password);QueryWrapperUser mapperQuery new QueryWrapper();mapperQuery.eq(userAccount, userAccount);mapperQuery.eq(password, entryPassword);User user userMapper.selectOne(mapperQuery);if (user null) {log.info(user Login error, userAccount cannot match password);return null;}User safetyUser new User();safetyUser.setUsername(user.getUsername());safetyUser.setId(user.getId());safetyUser.setUserAccount(user.getUserAccount());safetyUser.setAvatarUrl(user.getAvatarUrl());safetyUser.setEmail(user.getEmail());safetyUser.setPhone(user.getPhone());safetyUser.setGender(user.getGender());safetyUser.setUserStatus(user.getUserStatus());safetyUser.setCreateTime(user.getCreateTime());request.getSession().setAttribute(USER_LOGIN_STATE, safetyUser);return safetyUser;}}Session和cookie request请求HttpServletRequest request
前端请求后端一般使用ajaxAsynchronous Javascript And XML即是异步的JavaScript和XML,它可以异步地向服务器发送请求在等待响应的过程中不会阻塞当前页面。
简单来说封装后都用request来请求后端所以上面的参数中要加一个HttpServletRequest request并且调用它的getSession函数取到Session类再将它的Attribute类新增一个处于USER_LOGIN_STATE状态的具体用户类。Attribute本质上是一个Map类型的数据结构用于存储SessionUSER_LOGIN_STATE是我们自定义的一个字符串定义在UserService接口类中。
业务逻辑层构建
我们在项目中建一个名为service的文件夹在该文件夹下面定义一个UserService.java存放如下的接口类。 用于实现注册逻辑、登录逻辑的函数-UserRegister、UserLogin函数都是这个接口的方法。 在service文件夹中再建一个impl文件夹在里面建一个UserServiceImpl.java文件用extends继承该接口加上Service注解表示这是业务逻辑层 我们要将之前生成的数据库操作类UserMapper作为一个成员放入到该类中并加上Resource注解这样就可以自动调用连接上的数据库了。
tips
Slf4j是一个日志注解密码加密的盐值SALT可自行定义数据库需要在applications.yml里面配置具体可参照网上文章来以自行实践为准。注解加上后报错需要在pom.xml中添加对应依赖刷新maven后即可解决。
逻辑删除
Mybatis-plus配置时有一种逻辑删除的封装操作该字段设置为1后即视为已被删除。
在applications.yml中配置代码如下 global-config:db-config:logic-delete-field: isDelete # 全局逻辑删除字段名logic-delete-value: 1 # 逻辑已删除值logic-not-delete-value: 0 # 逻辑未删除值User实体类中设置为逻辑删除的字段前要加TableLogic注解 也可自行上官网配置查阅
控制层Controller封装
按照SpringMVC控制层视图层处理层的封装逻辑我们建一个名为Controller的文件夹一个model.request文件夹。后者存放接收请求的我们自定义的request类前者存放调用业务逻辑层函数对request请求进行处理并返回数据的总的一个控制类。Model文件夹中还存放着User实体类这个文件夹主要也就是用于存放些实体类 登录请求UserLoginRequest可以这么定义
Data
public class UserLoginRequest implements Serializable {Serialprivate static final long serialVersionUID -543286974259314538L;private String userAccount;private String password;private String CheckPassword;
}
serrialVersionUID自动生成方法在昨天的笔记里。 注册请求UserRegisterRequest可以这么定义两个request类定义分别放在一个和类名相同的java文件中
Data
public class UserRegisterRequest implements Serializable {Serialprivate static final long serialVersionUID 3253980956799016230L;private String userAccount;private String password;private String CheckPassword;
}
Data注解主要是放在一些实体类上用于提供get、toString等方法。