Springboot重寫addInterceptors()方法配置攔截器實例
Springboot重寫addInterceptors()方法配置攔截器實例
ShopAdminInterceptor (自定義攔截器類1)
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ShopAdminInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//獲取用戶登陸信息
Person person = (Person) request.getSession().getAttribute("person");
//判斷用戶是否有權限進入商家管理后臺系統(tǒng)
if(person != null && person.getUserId() > 0
&& person.getEnableStatus() == 1 && person.getPersonType() == 2){
//如果驗證通過,則返回true,放行請求,即用戶接下來的操作可以正常執(zhí)行
return true;
}
//如果不滿足登陸驗證,則跳轉到登陸頁面
response.sendRedirect("/o2o/local/to_login");
return false;
}
}SuperAdminInterceptor (自定義攔截器類2)
import com.cd.o2o2.entity.Person;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SuperAdminInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//獲取用戶登陸信息
Person person = (Person) request.getSession().getAttribute("person");
//判斷用戶是否有權限進入超級管理員后臺系統(tǒng)
if(person != null && person.getUserId() > 0
&& person.getEnableStatus() == 1 && person.getPersonType() == 3){
//如果驗證通過,則返回true,放行請求,即用戶接下來的操作可以正常執(zhí)行
return true;
}
//如果不滿足登陸驗證,則跳轉到登陸頁面
response.sendRedirect("/o2o/local/to_login");
return false;
}
}使用SSM開發(fā)web應用時,配置攔截器的方式:
<!--攔截器鏈-->
<mvc:interceptors>
<!--攔截器1,對商家管理系統(tǒng)進行權限驗證-->
<mvc:interceptor>
<!--指定攔截的請求-->
<mvc:mapping path="/shop_admin/**"/>
<!--指定使用的自定義攔截器類-->
<bean class="com.cd.o2o.interceptor.ShopAdminInterceptor"/>
</mvc:interceptor>
<!--攔截器2,對超級管理員系統(tǒng)進行權限驗證-->
<mvc:interceptor>
<!--指定攔截的請求-->
<mvc:mapping path="/super_admin/**"/>
<!--指定不攔截的請求-->
<mvc:exclude-mapping path="/super/toLogin"/>
<!--指定使用的自定義攔截器類-->
<bean class="com.cd.o2o.interceptor.SuperAdminInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>spring boot拋棄了復雜的xml配置,我們可以自定義配置類(標注@Configuration注解的類)來實現WebMvcConfigurer接口,并重寫addInterceptors()方法來配置攔截器:
import com.cd.o2o2.interceptor.ShopAdminInterceptor;
import com.cd.o2o2.interceptor.SuperAdminInterceptor;
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 MyWebAppConfiguration implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//注冊攔截器1,對商家管理系統(tǒng)進行權限驗證
InterceptorRegistration registration1 = registry.addInterceptor(new ShopAdminInterceptor());
//指定攔截器1要攔截的請求(支持*通配符)
registration1.addPathPatterns("/shop_admin/**");
//注冊攔截器2,對超級管理員系統(tǒng)進行權限驗證
InterceptorRegistration registration2 = registry.addInterceptor(new SuperAdminInterceptor());
/*指定攔截器2要攔截的請求(支持*通配符)*/
registration2.addPathPatterns("/super_admin/**");
//指定攔截器2不攔截的請求(支持*通配符)
registration2.excludePathPatterns("/super/toLogin");
}
}以java形式定制MVC配置時,實現WebMvcConfigurer接口即可,不要在@Configuration class上標注@EnableWebMvc (因為@EnableWebMvc是默認沒有靜態(tài)資源放行的,即.css .jpg .js等文件默認會被DispatcherServlet以/形式攔截)
@Configuration
@EnableWebMvc
public class MyWebAppConfiguration implements WebMvcConfigurer{
}否則所有的靜態(tài)資源css,js等都會被攔截

到此這篇關于Springboot重寫addInterceptors()方法配置攔截器實例的文章就介紹到這了,更多相關重寫addInterceptors()配置攔截器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring單元測試類ApplicationTests錯誤的解決
這篇文章主要介紹了Spring單元測試類ApplicationTests錯誤的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
Idea+maven搭建SSH(struts2+hibernate5+spring5)環(huán)境的方法步驟
這篇文章主要介紹了Idea+maven搭建SSH(struts2+hibernate5+spring5)環(huán)境的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06
SpringBoot org.springframework.beans.factory.Unsatisfie
本文主要介紹了SpringBoot org.springframework.beans.factory.UnsatisfiedDependencyException依賴注入異常,文中通過示例代碼介紹的很詳細,具有一定的參考價值,感興趣的可以了解一下2024-02-02
Springmvc RequestMapping請求實現方法解析
這篇文章主要介紹了Springmvc RequestMapping請求實現方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-09-09

