上節講過了登陸後將信息存儲於session中,可是如何作鑑權頁的登陸檢測呢?這一節講到spring boot的攔截器php
您能夠在如下狀況下使用SpringBoot中的Interceptor來執行操做html
如下是在使用攔截器時應瞭解的三種方法:java
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
//@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SecurityInterceptor()).addPathPatterns("/ucenter/*");
}
}
複製代碼
這裏對路徑以ucenter開頭的進行SecurityInterceptor處理web
import com.google.gson.Gson;
import com.vison.learnMall.Response;
import com.vison.learnMall.ResponseRet;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
/** * * */
public class SecurityInterceptor implements HandlerInterceptor {
private Logger logger = LoggerFactory.getLogger(this.getClass());
public SecurityInterceptor() {
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// logger.debug(request.getSession().getAttribute(App.SESSION_USER).toString());
if (request.getSession().getAttribute(App.SESSION_USER) != null) {
return true;
}
if (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {
PrintWriter writer = null;
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
writer = response.getWriter();
Gson gson = new Gson();
String jsonObject = gson.toJson(new Response(ResponseRet.unLogin, "未登陸"));
writer.print(jsonObject);
return false;
}
//未登陸的業務邏輯
response.sendRedirect("/login");
return false;
}
}
複製代碼