当前位置: 首页 > news >正文

目录网站做外链2023年火爆的新闻

目录网站做外链,2023年火爆的新闻,重庆制作网站,wordpress kleo文章目录 1.登录功能-后端1.思路分析2.完成对用户名和密码的校验1.com/sun/usercenter/service/UserService.java 添加方法2.com/sun/usercenter/service/impl/UserServiceImpl.java 添加方法3.com/sun/usercenter/service/impl/UserServiceImpl.java 新增属性 3.记录用户的登录…

文章目录

    • 1.登录功能-后端
        • 1.思路分析
        • 2.完成对用户名和密码的校验
          • 1.com/sun/usercenter/service/UserService.java 添加方法
          • 2.com/sun/usercenter/service/impl/UserServiceImpl.java 添加方法
          • 3.com/sun/usercenter/service/impl/UserServiceImpl.java 新增属性
        • 3.记录用户的登录态并配置MyBatisPlus的逻辑删除
          • 1.com/sun/usercenter/service/UserService.java 修改doLogin,增加参数 request
          • 2.com/sun/usercenter/service/impl/UserServiceImpl.java 新增属性
          • 3.com/sun/usercenter/service/impl/UserServiceImpl.java 添加代码
          • doLogin 方法添加代码,记录用户登录态
          • 4.配置MyBatisPlus的逻辑删除
            • 1.application.yml 配置
            • 2.实体类添加注解
    • 2.接口开发及测试
        • 1.com/sun/usercenter/controller/UserController.java 注册和登录接口
        • 2.封装登录和注册请求信息的对象
          • 1.文件目录
          • 2.com/sun/usercenter/model/request/UserLoginRequest.java 用户登录请求体
          • 3.com/sun/usercenter/model/request/UserRegisterRequest.java 用户注册请求体
        • 3.单元测试
          • 1.用户注册接口测试
            • 1.debug模式启动IDEA
            • 2.postman测试
          • 2.用户登录接口测试
            • 1.com/sun/usercenter/service/impl/UserServiceImpl.java的doLogin最后下断点
            • 2.postman测试
            • 3.查看session是否有用户登录状态的信息
            • 4.放行,查看postman的返回结果
          • 3.逻辑删除测试
            • 1.在数据库中把刚才进行登录的用户id改成1
            • 2.重新登录一下
    • 3.用户管理接口
        • 1.com/sun/usercenter/controller/UserController.java 添加方法
        • 2.user表新增字段role表示用户权限
          • 1.新增字段role
          • 2.com/sun/usercenter/model/domain/User.java 实体类新增权限字段
          • 3.Mapper.xml不用修改,因为这个字段本来就与表的字段对应
          • 4.com/sun/usercenter/service/impl/UserServiceImpl.java 用户脱敏里面把role字段加进去
        • 3.com/sun/usercenter/contant/UserConstant.java 存放用户常量的接口
        • 4.com/sun/usercenter/controller/UserController.java 对两个接口进行权限验证
          • 1.添加方法 isAdmin 判断是否为管理员
          • 2.修改两个接口的方法
        • 5.application.yml 设置session超时时间
        • 6.单元测试
          • 1.测试 searchUsers接口
            • 1.登录
            • 2.表中增加两条测试记录
            • 3.进行查询,成功查询!
          • 2.测试deleteUser接口
            • 1.删除id为1的用户
            • 2.查看数据库,成功进行逻辑删除
          • 3.解决 searchUsers接口返回的用户信息没有脱敏的问题
            • 1.com/sun/usercenter/service/UserService.java 添加方法
            • 2.com/sun/usercenter/service/impl/UserServiceImpl.java 实现方法并修改逻辑
            • 3.com/sun/usercenter/controller/UserController.java 修改searchUsers方法对查询到的用户列表进行脱敏
            • 4.再次测试,敏感信息变成null了

1.登录功能-后端

1.思路分析

image-20240321111353462

2.完成对用户名和密码的校验
1.com/sun/usercenter/service/UserService.java 添加方法
    public Long userRegister(String userAccount, String userPassword, String checkPassword);/*** 用户登录接口* @param userAccount 账号* @param userPassword 密码* @return 成功返回脱敏后的User对象,失败返回null*/public User doLogin(String userAccount, String userPassword);
2.com/sun/usercenter/service/impl/UserServiceImpl.java 添加方法
    @Overridepublic User doLogin(String userAccount, String userPassword) {// 1 检验用户名和密码是否合法,如果不合法就没必要去数据库查询// 验证非空if (StringUtils.isAnyBlank(userAccount, userPassword)) {return null;}// 账户4到16位,不能包含特殊字符if (!userAccount.matches("^[a-zA-Z0-9]{4,16}$")) {return null;}// 密码不小于8位if (userPassword.length() < 8) {return null;}// 2 密码加密进行查询String encryptPassword = DigestUtils.md5DigestAsHex((SALT + userPassword).getBytes());// 编写查询条件QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();userQueryWrapper.eq("userPassword", encryptPassword);userQueryWrapper.eq("userAccount", userAccount);// 执行查询User user = userMapper.selectOne(userQueryWrapper);// 判断用户是否存在if (user == null) {// 输出日志log.info("user login faild, userAccount can not match password");return null;}// 3 记录用户的登录态return user;}
3.com/sun/usercenter/service/impl/UserServiceImpl.java 新增属性

image-20240321114714756

3.记录用户的登录态并配置MyBatisPlus的逻辑删除
1.com/sun/usercenter/service/UserService.java 修改doLogin,增加参数 request
    /*** 用户登录接口* @param userAccount 账号* @param userPassword 密码* @return 成功返回脱敏后的User对象,失败返回null*/public User doLogin(String userAccount, String userPassword, HttpServletRequest request);
2.com/sun/usercenter/service/impl/UserServiceImpl.java 新增属性

image-20240321125443877

3.com/sun/usercenter/service/impl/UserServiceImpl.java 添加代码
doLogin 方法添加代码,记录用户登录态
        // 3 如果登录成功,记录用户的登录态// 首先进行脱敏User cleanUser = new User();cleanUser.setId(user.getId());cleanUser.setUsername(user.getUsername());cleanUser.setUserAccount(user.getUserAccount());cleanUser.setAvatarUrl(user.getAvatarUrl());cleanUser.setGender(user.getGender());cleanUser.setPhone(user.getPhone());cleanUser.setEmail(user.getEmail());cleanUser.setUserStatus(user.getUserStatus());cleanUser.setCreateTime(user.getCreateTime());HttpSession session = request.getSession();// 然后将脱敏后的用户信息放入session中session.setAttribute(USER_LOGIN_SAVE, cleanUser);return cleanUser;
4.配置MyBatisPlus的逻辑删除
1.application.yml 配置
global-config:db-config:logic-delete-field: isDelete # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)logic-delete-value: 1 # 逻辑已删除值(默认为 1)logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

2.实体类添加注解

image-20240321125851499

2.接口开发及测试

1.com/sun/usercenter/controller/UserController.java 注册和登录接口
package com.sun.usercenter.controller;import com.sun.usercenter.model.domain.User;
import com.sun.usercenter.model.request.UserLoginRequest;
import com.sun.usercenter.model.request.UserRegisterRequest;
import com.sun.usercenter.service.UserService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;/*** Description:** @Author sun* @Create 2024/3/21 13:04* @Version 1.0*/
@RestController // 作为一个Controller注入容器,并将返回结果转换为json
@RequestMapping("/user") // restful风格的请求
public class UserController {@Resourceprivate UserService userService; // 注入针对Service接口的bean对象,可以调用接口的方法@PostMapping("/register")public Long userRegister(@RequestBody UserRegisterRequest userRegisterRequest) {// 首先判断数据是否成功封装if (userRegisterRequest == null) {return null;}// 对封装的数据进行校验,如果有一个是空直接返回nullString userAccount = userRegisterRequest.getUserAccount();String userPassword = userRegisterRequest.getUserPassword();String checkPassword = userRegisterRequest.getCheckPassword();if (StringUtils.isAnyBlank(userAccount, userPassword, checkPassword)) {return null;}// 调用Service层的注册方法,如果成功注册,则返回注册成功的用户id, 否则返回-1return userService.userRegister(userAccount, userPassword, checkPassword);}@PostMapping("/login")public User userRegister(@RequestBody UserLoginRequest userLoginRequest, HttpServletRequest request) {// 首先判断数据是否成功封装if (userLoginRequest == null) {return null;}// 对封装的数据进行校验,如果有一个是空直接返回nullString userAccount = userLoginRequest.getUserAccount();String userPassword = userLoginRequest.getUserPassword();if (StringUtils.isAnyBlank(userAccount, userPassword)) {return null;}return userService.doLogin(userAccount, userPassword, request);}}
2.封装登录和注册请求信息的对象
1.文件目录

image-20240321140744768

2.com/sun/usercenter/model/request/UserLoginRequest.java 用户登录请求体
package com.sun.usercenter.model.request;import lombok.Data;/*** Description: 用户登录请求体** @Author sun* @Create 2024/3/21 13:39* @Version 1.0*/
@Data
public class UserLoginRequest {private String userAccount;private String userPassword;
}
3.com/sun/usercenter/model/request/UserRegisterRequest.java 用户注册请求体
package com.sun.usercenter.model.request;import lombok.Data;/*** Description: 用户注册请求体** @Author sun* @Create 2024/3/21 13:26* @Version 1.0*/
@Data
public class UserRegisterRequest {private String userAccount;private String userPassword;private String checkPassword;
}
3.单元测试
1.用户注册接口测试
1.debug模式启动IDEA
2.postman测试

image-20240321141238471

2.用户登录接口测试
1.com/sun/usercenter/service/impl/UserServiceImpl.java的doLogin最后下断点

image-20240321141351808

2.postman测试

image-20240321141426988

3.查看session是否有用户登录状态的信息

image-20240321141538940

4.放行,查看postman的返回结果

image-20240321141640952

3.逻辑删除测试
1.在数据库中把刚才进行登录的用户id改成1

image-20240321142052891

2.重新登录一下

image-20240321142150628

3.用户管理接口

1.com/sun/usercenter/controller/UserController.java 添加方法
    /*** 根据用户名进行模糊查询** @param username* @return 成功返回信息,失败返回null*/@GetMapping("/search")public List<User> searchUsers(String username) {QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();if (StringUtils.isNotBlank(username)) {userQueryWrapper.like("username", username);}return userService.list(userQueryWrapper);}/*** 根据id进行逻辑删除(只要配置了MyBatisPlus的逻辑删除即可进行自动逻辑删除)** @param id* @return 成功返回true,失败返回false*/@PostMapping("/delete")public boolean deleteUser(@RequestBody Long id) {if (id <= 0) {return false;}return userService.removeById(id); // 这里会自动逻辑删除}
2.user表新增字段role表示用户权限
1.新增字段role

image-20240321145517358

2.com/sun/usercenter/model/domain/User.java 实体类新增权限字段

image-20240321151111785

3.Mapper.xml不用修改,因为这个字段本来就与表的字段对应
4.com/sun/usercenter/service/impl/UserServiceImpl.java 用户脱敏里面把role字段加进去

image-20240321152845893

3.com/sun/usercenter/contant/UserConstant.java 存放用户常量的接口
package com.sun.usercenter.contant;/*** Description: 用户常量** @Author sun* @Create 2024/3/21 15:14* @Version 1.0*/
public interface UserConstant {/*用户登录状态*/String USER_LOGIN_SAVE = "userLoginState";// 用户权限/*默认权限*/Integer DEFAULT_ROLE = 0;/*管理员权限*/Integer ADMIN_ROLE = 1;
}
4.com/sun/usercenter/controller/UserController.java 对两个接口进行权限验证
1.添加方法 isAdmin 判断是否为管理员
    /*** 判断是否是管理员* @param request* @return 布尔*/public boolean isAdmin(HttpServletRequest request) {User user = (User) request.getSession().getAttribute(USER_LOGIN_SAVE);return user != null && user.getRole() == ADMIN_ROLE;}
2.修改两个接口的方法
    /*** 根据用户名进行模糊查询** @param username* @return 成功返回信息,失败返回null*/@GetMapping("/search")public List<User> searchUsers(String username, HttpServletRequest request) {// 仅管理员可查询if (!isAdmin(request)) {return new ArrayList<>();}QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();if (StringUtils.isNotBlank(username)) {userQueryWrapper.like("username", username);}return userService.list(userQueryWrapper);}/*** 根据id进行逻辑删除(只要配置了MyBatisPlus的逻辑删除即可进行自动逻辑删除)** @param id* @return 成功返回true,失败返回false*/@PostMapping("/delete")public boolean deleteUser(long id, HttpServletRequest request) {// 仅管理员可删除if (!isAdmin(request)) {return false;}if (id <= 0) {return false;}return userService.removeById(id); // 这里会自动逻辑删除}
5.application.yml 设置session超时时间

image-20240321162627353

6.单元测试
1.测试 searchUsers接口
1.登录

image-20240321160903366

2.表中增加两条测试记录

image-20240321161350566

3.进行查询,成功查询!

image-20240321161505507

2.测试deleteUser接口
1.删除id为1的用户

image-20240321162032694

2.查看数据库,成功进行逻辑删除

image-20240321162120945

3.解决 searchUsers接口返回的用户信息没有脱敏的问题
1.com/sun/usercenter/service/UserService.java 添加方法
    /*** 进行用户信息脱敏* @param user* @return*/User getCleanUser(User user);
2.com/sun/usercenter/service/impl/UserServiceImpl.java 实现方法并修改逻辑

image-20240321165022958

    /*** 对得到的user对象,进行用户信息脱敏* @param user* @return*/@Overridepublic User getCleanUser(User user) {User cleanUser = new User();cleanUser.setId(user.getId());cleanUser.setUsername(user.getUsername());cleanUser.setUserAccount(user.getUserAccount());cleanUser.setAvatarUrl(user.getAvatarUrl());cleanUser.setGender(user.getGender());cleanUser.setPhone(user.getPhone());cleanUser.setEmail(user.getEmail());cleanUser.setUserStatus(user.getUserStatus());cleanUser.setCreateTime(user.getCreateTime());cleanUser.setRole(user.getRole());return cleanUser;}
3.com/sun/usercenter/controller/UserController.java 修改searchUsers方法对查询到的用户列表进行脱敏
/*** 根据用户名进行模糊查询** @param username* @return 成功返回信息,失败返回null*/
@GetMapping("/search")
public List<User> searchUsers(String username, HttpServletRequest request) {// 仅管理员可查询if (!isAdmin(request)) {return new ArrayList<>();}QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();if (StringUtils.isNotBlank(username)) {userQueryWrapper.like("username", username);}List<User> userList = userService.list(userQueryWrapper);// 将查询到的用户数据进行脱敏// 这里的逻辑就是把查询到User对象列表使用user来遍历然后对每个user对象进行脱敏最后组合成一个新的listreturn userList.stream().map(user -> {return userService.getCleanUser(user);}).collect(Collectors.toList());
}
4.再次测试,敏感信息变成null了

image-20240321170006198


文章转载自:
http://wanjiaeyeshot.ybmp.cn
http://wanjiapampas.ybmp.cn
http://wanjiapyralid.ybmp.cn
http://wanjiaheldentenor.ybmp.cn
http://wanjiaelvira.ybmp.cn
http://wanjiackd.ybmp.cn
http://wanjiasneezes.ybmp.cn
http://wanjiacyclostomous.ybmp.cn
http://wanjiaunanalysed.ybmp.cn
http://wanjiakozhikode.ybmp.cn
http://wanjiaimperceivable.ybmp.cn
http://wanjiagreedy.ybmp.cn
http://wanjiarheinland.ybmp.cn
http://wanjiarazzle.ybmp.cn
http://wanjiaammunition.ybmp.cn
http://wanjiasitotoxin.ybmp.cn
http://wanjiabice.ybmp.cn
http://wanjiashipment.ybmp.cn
http://wanjiametalanguage.ybmp.cn
http://wanjiaexeat.ybmp.cn
http://wanjiabioplast.ybmp.cn
http://wanjianailsick.ybmp.cn
http://wanjiasherd.ybmp.cn
http://wanjiajl.ybmp.cn
http://wanjiadestiny.ybmp.cn
http://wanjiahardy.ybmp.cn
http://wanjiacoloquintida.ybmp.cn
http://wanjiaprotectress.ybmp.cn
http://wanjiahaussa.ybmp.cn
http://wanjiaazion.ybmp.cn
http://wanjiapity.ybmp.cn
http://wanjiamonadology.ybmp.cn
http://wanjiamukden.ybmp.cn
http://wanjiascottie.ybmp.cn
http://wanjiadole.ybmp.cn
http://wanjiaokefenokee.ybmp.cn
http://wanjiabeggarliness.ybmp.cn
http://wanjiastraightjacket.ybmp.cn
http://wanjiaurtext.ybmp.cn
http://wanjiadisjunction.ybmp.cn
http://wanjiaentropy.ybmp.cn
http://wanjiamyoinositol.ybmp.cn
http://wanjiabeccafico.ybmp.cn
http://wanjiafiliety.ybmp.cn
http://wanjiafurrow.ybmp.cn
http://wanjiaperuvian.ybmp.cn
http://wanjiahydromagnetics.ybmp.cn
http://wanjiasennight.ybmp.cn
http://wanjiareunification.ybmp.cn
http://wanjiaporrect.ybmp.cn
http://wanjiaparicutin.ybmp.cn
http://wanjiaghanaian.ybmp.cn
http://wanjiaendosperm.ybmp.cn
http://wanjiapsilanthropism.ybmp.cn
http://wanjiawearing.ybmp.cn
http://wanjiasoutar.ybmp.cn
http://wanjiaflattie.ybmp.cn
http://wanjiapersevering.ybmp.cn
http://wanjiazinlac.ybmp.cn
http://wanjiaquixotism.ybmp.cn
http://wanjiaflinch.ybmp.cn
http://wanjiahomoecious.ybmp.cn
http://wanjialed.ybmp.cn
http://wanjiaaculeus.ybmp.cn
http://wanjiadepauperate.ybmp.cn
http://wanjiaglimmery.ybmp.cn
http://wanjiaichthyoid.ybmp.cn
http://wanjiapolysepalous.ybmp.cn
http://wanjiarejectamenta.ybmp.cn
http://wanjiastepparent.ybmp.cn
http://wanjiaextragalactic.ybmp.cn
http://wanjiaerlking.ybmp.cn
http://wanjiacoteau.ybmp.cn
http://wanjiapager.ybmp.cn
http://wanjiaprorogate.ybmp.cn
http://wanjialockmaker.ybmp.cn
http://wanjiaasterisk.ybmp.cn
http://wanjiasidebums.ybmp.cn
http://wanjiaerogenous.ybmp.cn
http://wanjiamonochord.ybmp.cn
http://www.15wanjia.com/news/106326.html

相关文章:

  • 购物网站模板下载苏州百度关键词优化
  • 域名注册网站有哪些怎么样引流加微信
  • 做网络推广要做网站吗百度下载正版
  • dede汽车资讯网站源码营业推广方案怎么写
  • 山东省住房与城乡建设厅网站百度seo找哪里
  • 网站开发手机编译器软文营销文案
  • 中国网站排名站长之家html简单网页设计作品
  • 网站开发技术笔记网页友情链接
  • 如何快速学会做网站广告推广公司
  • tug wordpress东莞seo建站公司哪家好
  • 一家专门做代购的网站品牌seo培训
  • js获取网站广告点击量怎么做百度推广费用怎么算
  • 榆林微网站建设seo综合查询平台
  • 外贸网站推广平台蓝颜seo牛百度关键词怎么刷上去
  • 网站制作专家拼多多女装关键词排名
  • 清远网站开发seo搜索引擎优化工程师招聘
  • 在县城做商城网站国际新闻快报
  • 福建中国建设工程造价管理协会网站国内最新的新闻
  • 怎么在服务器上部署网站win10优化工具
  • 个体户工商可以做经营性网站吗ip子域名大全
  • 杭州网站建设制作公司网络营销题库案例题
  • wordpress 仪表盘裁剪图片aso优化推广公司
  • 收费做网站在线seo优化
  • wordpress首页轮播图片尺寸seo分析网站
  • 在什么网站做兼职免费seo在线工具
  • 学做甜品的网站重庆seo薪酬水平
  • 学院网站建设作用班级优化大师app下载
  • 西双版纳州住房和城乡建设局网站最近三天的国内新闻
  • 宝塔面板做网站酒店机票搜索量暴涨
  • 如何做微信网站建设泉州百度竞价公司