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

基于 Spring Boot 瑞吉外卖系统开发(十五)

基于 Spring Boot 瑞吉外卖系统开发(十五)

前台用户登录

在这里插入图片描述
在登录页面输入验证码,单击“登录”按钮,页面会携带输入的手机号和验证码向“/user/login”发起请求。
在这里插入图片描述
在这里插入图片描述

定义UserMapper接口

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

定义UserService接口

public interface UserService extends IService<User> {
}

定义UserService实现类

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}

定义UserController类

@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;/*** 移动端用户登录* @param map* @param session* @return*/@PostMapping("/login")public R<User> login(@RequestBody Map<String,String> map,HttpSession session){String phone = map.get("phone");String code = map.get("code");//TODO 验证码验证//判断当前手机号对应的用户是否为新用户,如果是新用户就自动完成注册QueryWrapper<User> query = new QueryWrapper<>();query.eq("phone",phone);User user = userService.getOne(query);if(user == null){user = new User();user.setPhone(phone);user.setStatus(1);userService.save(user);}session.setAttribute("loginUser",user);return R.success(user);}/*** 用户退出*/@PostMapping("/loginout")public R<String> logout(HttpServletRequest request){//清理Session中保存的当前登录员工的idrequest.getSession().removeAttribute("loginUser");return R.success("退出成功");}}

定义用户登录拦截器拦截请求

在config包中创建UserLoginInterceptor 拦截器

public class UserLoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {Object loginUser = request.getSession().getAttribute("loginUser");if  (loginUser == null) {//未登录,返回登录页response.sendRedirect("/front/page/login.html");return  false ; //不放行}return  true ; //放行}}

配置用户登录拦截器

在WebMvcConfig文件中配置拦截器,设置拦截的路径,这里只简单设置了拦截页面。

    @Overridepublic void addInterceptors(InterceptorRegistry registry) {//后台员工登录拦截器registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/backend/page/**","/backend/index.html").excludePathPatterns("/backend/page/login/login.html");//前台用户登录拦截器registry.addInterceptor(new UserLoginInterceptor()).addPathPatterns("/front/page/**","/front/index.html").excludePathPatterns("/front/page/login.html");}

运行测试

输入手机号及该验证码后,单击“登录”按钮,会跳转到用户端首页。
在这里插入图片描述

相关文章:

  • STC32G12K12实战:串口通信
  • Vector和list
  • STMCubeMX使用TB6612驱动编码轮并进行测速
  • 102. 二叉树的层序遍历递归法:深度优先搜索的巧妙应用
  • 业务中台-典型技术栈选型(微服务、容器编排、分布式数据库、消息队列、服务监控、低代码等)
  • vue3基础学习 [简单标签] (vscode)
  • 基于 Spring Boot 瑞吉外卖系统开发(十四)
  • OpenCV CUDA模块中逐元素操作------算术运算
  • 解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-强化学习算法
  • Vue3指令(二)--v-text、v-html数据渲染,计算属性
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ |搭建项目框架
  • PlantSimulation 隐藏 Frame节点(Structure)的操作方法
  • ComplianceAsCode/content 项目架构设计刨析
  • 西门子WinCC Unified PC的GraphQL使用手册
  • [python] python中的魔法方法和属性
  • Spring Boot 博客项目深度分析报告
  • k8s监控方案实践补充(一):部署Metrics Server实现kubectl top和HPA支持
  • iOS WebView和WKWebView怎么调试?
  • 行业趋势与技术创新:驾驭工业元宇宙与绿色智能制造
  • Large-Scale Language Models: In-Depth Principles and Pioneering Innovations
  • 7月纽约举办“上海日”,上海大剧院舞剧《白蛇》连演三场
  • 美国调整对华加征关税
  • 北京13日冰雹过后,已受理各险种报案近3万件
  • 上海市重大工程一季度开局良好,崇明线等按既定计划加快建设
  • 特朗普开启第二任期首次外访:中东行主打做生意,不去以色列
  • 中美大幅下调超100%关税,印巴四日“战争”复盘|907编辑部