一、自定义一个拦截器实现HandlerInterceptor接口:
package com.demengshop.interceptor;
import com.alibaba.dubbo.config.annotation.Reference;
import com.demengshop.service.AdminUserService;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RememberInterceptor implements HandlerInterceptor {
@Reference
AdminUserService adminUserService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Subject subject = SecurityUtils.getSubject();
if(!subject.isAuthenticated() && subject.isRemembered()){
subject.getSession().setAttribute("admin",subject.getPrincipal());
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
二、创建一个Java类实现WebMvcConfigurer接口,然后重写addInterceptors方法:
package com.demengshop.config;
import com.demengshop.interceptor.RememberInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Bean
public RememberInterceptor rememberInterceptor(){
return new RememberInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(rememberInterceptor());
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("adminLogin");
registry.addViewController("/login").setViewName("adminLogin");
registry.addViewController("/adminLogin").setViewName("adminLogin");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/static/");
}
}