这是我自己写出的登录拦截案例,之前写这个在网上找了一些但描述的感觉都不太懂。
于是自己试着写了一遍,可以供各位进行参考(注意本文章标红的地方需要可能进行改动)
有什么不懂的可以滴滴我哦
下面是我的目录
首先把这两个类复制进去(标红的地方是需要改动的地方,根据你的登录页面)
WebMvcConfig.java
package com.lyh.common;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import javax.annotation.Resource;
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter implements WebMvcConfigurer {
@Resource
AuthInterceptor authInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(authInterceptor)
// .addPathPatterns("/api/**")
.addPathPatterns("/page/end/**")
.excludePathPatterns("/**/*.js")
.excludePathPatterns("/**/*.css")
.excludePathPatterns("/page/end/adminLogin.html", "/page/end/register.html")
.excludePathPatterns("/api/user/login", "/api/user/register","/api/setmeal/getAllSetmeal");
}
}
AuthInterceptor.java(注意这里标红的地方,要与你登录的controller方法存session的值相对应)
package com.lyh.common;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 拦截器
*/
@Configuration
public class AuthInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException, IOException {
Object user = request.getSession().getAttribute("user");
if (user != null) {
request.getSession().setAttribute("user", user);
return true;
}
response.sendRedirect("/page/end/adminLogin.html");
return false;
}
}
adminLogin.java(要与上述的user相对应) package com.lyh.controller; import com.lyh.entity.Admin; import com.lyh.service.AdminService; import com.lyh.utils.Result; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @RestController @RequestMapping("/admin") @CrossOrigin public class AdminController { @Autowired private AdminService adminService; /** * 登录 */ @PostMapping("/adminLogin") public Result<Admin> login(@RequestBody Admin admin, HttpServletRequest request) { Admin res = adminService.adminLogin(admin); request.getSession().setAttribute("user", res); // 存入 session return Result.success(res); } }
下面这个是前台的登录页面,也要与上述的user相对应