基于 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");}
運行測試
輸入手機號及該驗證碼后,單擊“登錄”按鈕,會跳轉到用戶端首頁。