在專案目錄下建立兩個套件:inter 與contsfig
#在inter新層中實作HandlerInterceptor的繼承類別
package com.example.gameboxadminserver.inter; import com.example.gameboxadminserver.entity.User; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class MyInterceptor implements HandlerInterceptor { //在preHandle方法中进行登录判断 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session = request.getSession(); //session.setAttribute("adminName","o"); String adminName = (String)session.getAttribute("adminName");//获取储存的session //System.out.println(adminName); if(adminName==null){ System.out.println("请先登陆!"); return false; } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { //System.out.println("执行了TestInterceptor的postHandle方法"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
在conrsfig中新增WebMvcConfiguer的繼承類別LoginConfig
實作addInterceptors方法
package com.example.gameboxadminserver.contsfig; import com.example.gameboxadminserver.inter.MyInterceptor; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class LoginConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { //注册拦截器 InterceptorRegistration registration = registry.addInterceptor(new MyInterceptor()); registration.addPathPatterns("/**"); //所有路径都被拦截 registration.excludePathPatterns( //添加不拦截路径 "/admin/adminLogin", ); } }
在serviceImpl層
實作登入邏輯並儲存session
Httpsession session
session.setAttribute(“name”,value);
package com.example.gameboxadminserver.service.impl; import com.example.gameboxadminserver.entity.Admin; import com.example.gameboxadminserver.entity.Result; import com.example.gameboxadminserver.entity.ResultUtil; import com.example.gameboxadminserver.mapper.AdminMapper; import com.example.gameboxadminserver.service.AdminService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; /** * <p> * 服务实现类 * </p> * * @author firstGroup * @since 2020-10-28 */ @Service public class AdminServiceImpl extends ServiceImpl<AdminMapper, Admin> implements AdminService { @Autowired AdminMapper adminMapper; @Override public Result adminLogin(HttpSession session,String adminName, String adminPwd) { Admin admin = adminMapper.adminLogin(adminName,adminPwd); if(admin!=null){ session.setAttribute("adminName",adminName); return ResultUtil.success("登陆成功!"); } return ResultUtil.error(2000,"登陆失败"); } }
這樣就寫完啦
#功能測試
登陸失敗
無法存取其他介面
登入成功
成功存取其他介面
以上是SpringBoot如何實作登入攔截器的詳細內容。更多資訊請關注PHP中文網其他相關文章!