修改 foodie-dev-api 模块下的 PassportController 类,将查询到的部分内容设置为空,不返回给前端显示,并将返回的内容放到 cookie 中
package com.imooc.controller;import com.imooc.pojo.Users;import com.imooc.pojo.bo.UserBO;import com.imooc.service.UserService;import com.imooc.utils.CookieUtils;import com.imooc.utils.IMOOCJSONResult;import com.imooc.utils.JsonUtils;import com.imooc.utils.MD5Utils;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/*** @author 92578* @since 1.0*/@Api(value = "注册登录", tags = {"用于注册登录的相关接口"})@RestController@RequestMapping("passport")public class PassportController {@Autowiredprivate UserService userService;@ApiOperation(value = "用户名是否存在", notes = "用户名是否存在", httpMethod = "GET")@GetMapping("/usernameIsExist")public IMOOCJSONResult usernameIsExist(@RequestParam String username) {// 1. 判断用户名不能为空if (StringUtils.isBlank(username)) {return IMOOCJSONResult.errorMsg("用户名不能为空");}// 2. 查找注册的用户名是否存在boolean isExist = userService.queryUsernameIsExist(username);if (isExist) {return IMOOCJSONResult.errorMsg("用户名已经存在");}// 3. 请求成功,用户名没有重复return IMOOCJSONResult.ok();}@ApiOperation(value = "用户注册", notes = "用户注册", httpMethod = "POST")@PostMapping("/regist")public IMOOCJSONResult regist(@RequestBody UserBO userBO,HttpServletRequest request,HttpServletResponse response) {String username = userBO.getUsername();String password = userBO.getPassword();String confirmPwd = userBO.getConfirmPassword();// 0. 判断用户名和密码不为空if (StringUtils.isBlank(username) || StringUtils.isBlank(password) || StringUtils.isBlank(confirmPwd)) {return IMOOCJSONResult.errorMsg("用户名或密码不能为空");}// 1. 查询用户名是否存在boolean isExist = userService.queryUsernameIsExist(username);if (isExist) {return IMOOCJSONResult.errorMsg("用户名已经存在");}// 2. 密码长度不能少于 6 位if (password.length() < 6) {return IMOOCJSONResult.errorMsg("密码长度不能少于6");}// 3. 判断两次密码是否一致if (!password.equals(confirmPwd)) {return IMOOCJSONResult.errorMsg("两次密码输入不一致");}// 4. 实现注册Users userResult = userService.createUser(userBO);userResult = setNullProperty(userResult);CookieUtils.setCookie(request, response, "user", JsonUtils.objectToJson(userResult), true);return IMOOCJSONResult.ok();}@ApiOperation(value = "用户登录", notes = "用户登录", httpMethod = "POST")@PostMapping("/login")public IMOOCJSONResult login(@RequestBody UserBO userBO,HttpServletRequest request,HttpServletResponse response) throws Exception {String username = userBO.getUsername();String password = userBO.getPassword();// 0. 判断用户名和密码不为空if (StringUtils.isBlank(username) || StringUtils.isBlank(password)) {return IMOOCJSONResult.errorMsg("用户名或密码不能为空");}// 1. 实现登录Users userResult = userService.queryUserForLogin(username, MD5Utils.getMD5Str(password));if (userResult == null) {return IMOOCJSONResult.errorMsg("用户名或密码不正确");}userResult = setNullProperty(userResult);CookieUtils.setCookie(request, response, "user", JsonUtils.objectToJson(userResult), true);return IMOOCJSONResult.ok(userResult);}private Users setNullProperty(Users userResult) {userResult.setPassword(null);userResult.setMobile(null);userResult.setEmail(null);userResult.setCreatedTime(null);userResult.setUpdatedTime(null);userResult.setBirthday(null);return userResult;}}
启动项目,打开浏览器,访问 http://localhost:8080/foodie-shop/login.html 输入用户名“imooc”,密码“123123”进行登录
登录成功后显示用户名、昵称和头像
