国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java SpringBoot 使用攔截器作為權限控制的實現方法

Java SpringBoot 使用攔截器作為權限控制的實現方法

2022-02-17 14:38New_HackerHK Java教程

這篇文章主要介紹了Java SpringBoot 使用攔截器作為權限控制的實現,文中通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

如何實現

首先攔截器是屬于web這塊的,那我們需要引入springboot web模塊,具體版本在parent中

?
1
2
3
4
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

然后我們在config目錄下新建interceptor目錄,用來放攔截器

  • 我們新建兩個攔截器,一個用來登陸攔截,一個用來進行管理員攔截。
  • 登陸攔截不必多說,就是判斷除登陸請求外所有請求是否登陸過,沒有我們就截斷請求,然會返回失敗狀態
  • 管理員攔截,攔截的是管理員才能訪問的資源,比如用戶管理/權限管理等,它是登陸攔截放行后才能進行的,
  • 就像關卡是一關一關的。登陸驗證后進入管理員驗證,判斷該登陸用戶是否具有管理員權限,若擁有則放行,否則攔截并返回失敗狀態
  • 攔截器的核心是實現 org.springframework.web.servlet.HandlerInterceptor 接口,驗證邏輯一般寫在 preHandle 方法中,在請求資源前
  • 我的驗證邏輯比較簡單,登陸驗證就是從session中取出用戶信息,判斷是否存在,用戶信息是登陸成功時放入session中的,大家也可以使用JWT驗證
  • 管理員驗證也是從session中取出管理員信息,判斷是否是管理員,管理員信息是登陸成功時將是否是管理員的信息放入session中的,大家也可以使用JWT驗證

登陸攔截器

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package com.example.interceptor_demo.config.interceptor;
 
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
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;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
/**
 * 攔截器,登錄檢查
 */
@Component
public class LoginInterceptor implements HandlerInterceptor {
 
    @Autowired
    private HttpSession session;
 
    @Autowired
    private ObjectMapper objectMapper;
 
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        Object user = session.getAttribute("sessionUser");
        if (sessionUser!=null){
            return true;
        }else {
            Map<String,Object> notLogin = new HashMap<>();
            notLogin.put("msg","not login");
            notLogin.put("code",403);
            notLogin.put("data",null);
            try(PrintWriter printWriter = response.getWriter()){
                printWriter.print(objectMapper.writeValueAsString(notLogin));
            }catch (Exception e){
                e.printStackTrace();
            }
            return false;
        }
    }
 
 
    @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 {
    }
 
}

管理員攔截器

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package com.example.interceptor_demo.config.interceptor;
 
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
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;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
/**
 * 攔截器,管理員驗證
 */
@Component
public class AdminInterceptor implements HandlerInterceptor {
 
    @Autowired
    private HttpSession session;
 
    @Autowired
    private ObjectMapper objectMapper;
 
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        Boolean isAdmin = (Boolean)session.getAttribute("sessionAdmin");
        if (isAdmin!=null && isAdmin){
            return true;
        }else {
            Map<String,Object> notLogin = new HashMap<>();
            notLogin.put("msg","no power");
            notLogin.put("code",403);
            notLogin.put("data",null);
            try(PrintWriter printWriter = response.getWriter()){
                printWriter.print(objectMapper.writeValueAsString(notLogin));
            }catch (Exception e){
                e.printStackTrace();
            }
            return false;
        }
    }
 
 
    @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 {
    }
 
}

最后我們在config目錄下新建WebMvcConfig類,用來注冊攔截器

  • 攔截器注冊類的核心是實現 org.springframework.web.servlet.config.annotation.WebMvcConfigurer 接口
  • 實現 addInterceptors 方法,參數 registry 對象可用來注冊攔截器
  • registry.addInterceptor() 方法用來添加攔截器
  • .addPathPatterns() 方法是為該攔截器添加攔截資源路徑
  • .excludePathPatterns() 方法是為該攔截器添加要放行的資源路徑
  • 其中 * 代表路徑下任意名稱,** 代表任意路徑下任意名稱
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.example.interceptor_demo.config;
 
import com.example.interceptor_demo.config.interceptor.AdminInterceptor;
import com.example.interceptor_demo.config.interceptor.LoginInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
 
    @Autowired
    private LoginInterceptor loginInterceptor;
 
    @Autowired
    private AdminInterceptor adminInterceptor;
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        this.loginInterceptor(registry);//登錄攔截       
        this.adminInterceptor(registry);//管理員攔截
    }
 
    private void loginInterceptor(InterceptorRegistry registry){
        registry.addInterceptor(loginInterceptor)
                .addPathPatterns("/**")
                .excludePathPatterns(//釋放登陸接口
                        "/login/**"
                );
    }
 
    private void adminInterceptor(InterceptorRegistry registry){
        registry.addInterceptor(htmlPageInterceptor)
                .addPathPatterns("/admin/**");//攔截管理員接口
    }
}

到此這篇關于Java SpringBoot 使用攔截器作為權限控制的文章就介紹到這了,更多相關Java SpringBoot攔截器權限控制內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/New-HackerHK/p/15176720.html#4950599

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人黄色片网站 | 狠狠色狠色综合曰曰 | 一本大道伊人久久综合 | 久久精品无码一区二区日韩av | 欧美日韩综合一区 | 国产目拍亚洲精品99久久精品 | 四虎影视最新免费版 | 精品国产黄a∨片高清在线 91精品国产91久久久 | 国产一区二区三区在线 | 久久久www | 欧美日韩一区在线 | 成人黄色小视频 | 黄色一级电影在线观看 | 一区二区三区久久 | 成人亚洲 | 欧美在线观看免费观看视频 | av一区二区三区四区 | 国产一区二区三区视频 | 国产综合精品一区二区三区 | 国产欧美一区二区三区在线看 | 免费一区二区 | 日韩一区欧美 | 成人午夜精品 | 日日夜夜精品免费视频 | 中文字幕在线影院 | 色综合一区二区 | 中文字幕日韩欧美一区二区三区 | 亚洲国产精品久久久 | 欧美午夜精品久久久久久蜜 | 国产特黄一级 | 青青草97| 91人人网| 在线观看日韩 | 欧美一级在线 | 色婷婷av久久久久久久 | 国产欧美精品一区 | 国产成人精品一区二区三区四区 | 久久久久久久国产精品 | 久久久久久久久一区二区三区 | av天天操 | 91亚洲精品一区 |