只是個(gè)人意見。 你把黑名單存在數(shù)據(jù)庫(kù)。記得加一個(gè)時(shí)間。 然后 寫一個(gè)定時(shí)器 比如每天執(zhí)行一次 這個(gè)定時(shí)器去數(shù)據(jù)庫(kù)查詢 比如查詢5小時(shí)之前的所有黑名單自動(dòng)刪除。 這是一種辦法。 其次是你在生存黑名單也就是往數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的時(shí)候就啟動(dòng)一個(gè)線程。讓其延遲比如5小時(shí)在折行 折行的內(nèi)容為刪除剛才的ip。這只是思路。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國(guó)際域名空間、虛擬主機(jī)、營(yíng)銷軟件、網(wǎng)站建設(shè)、隴西網(wǎng)站維護(hù)、網(wǎng)站推廣。
?
lovenuo1314 ?
碼齡11年
關(guān)注
1、若依后端gateway模塊配置白名單
顧名思義,就是允許訪問的地址。且無(wú)需登錄就能訪問。在ignore中設(shè)置whites,表示允許匿名訪問。
1.1、在nacos中g(shù)ateway配置文件中配置
?
1.2、代碼
package com.ruoyi.gateway.filter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import com.ruoyi.common.core.constant.CacheConstants;
import com.ruoyi.common.core.constant.HttpStatus;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.TokenConstants;
import com.ruoyi.common.core.utils.JwtUtils;
import com.ruoyi.common.core.utils.ServletUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.gateway.config.properties.IgnoreWhiteProperties;
import io.jsonwebtoken.Claims;
import reactor.core.publisher.Mono;
/**
* 網(wǎng)關(guān)鑒權(quán)
*
* @author ruoyi
*/
@Component
public class AuthFilter implements GlobalFilter, Ordered
{
private static final Logger log = LoggerFactory.getLogger(AuthFilter.class);
// 排除過濾的 uri 地址,nacos自行添加
@Autowired
private IgnoreWhiteProperties ignoreWhite;
@Autowired
private RedisService redisService;
@Override
public MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain)
{
ServerHttpRequest request = exchange.getRequest();
ServerHttpRequest.Builder mutate = request.mutate();
String url = request.getURI().getPath();
// 跳過不需要驗(yàn)證的路徑
if (StringUtils.matches(url, ignoreWhite.getWhites()))
{
return chain.filter(exchange);
}
String token = getToken(request);
if (StringUtils.isEmpty(token))
{
return unauthorizedResponse(exchange, "令牌不能為空");
}
Claims claims = JwtUtils.parseToken(token);
if (claims == null)
{
return unauthorizedResponse(exchange, "令牌已過期或驗(yàn)證不正確!");
}
String userkey = JwtUtils.getUserKey(claims);
boolean islogin = redisService.hasKey(getTokenKey(userkey));
if (!islogin)
{
return unauthorizedResponse(exchange, "登錄狀態(tài)已過期");
}
String userid = JwtUtils.getUserId(claims);
String username = JwtUtils.getUserName(claims);
if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username))
{
return unauthorizedResponse(exchange, "令牌驗(yàn)證失敗");
}
// 設(shè)置用戶信息到請(qǐng)求
addHeader(mutate, SecurityConstants.USER_KEY, userkey);
addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid);
addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username);
// 內(nèi)部請(qǐng)求來(lái)源參數(shù)清除
removeHeader(mutate, SecurityConstants.FROM_SOURCE);
return chain.filter(exchange.mutate().request(mutate.build()).build());
}
private void addHeader(ServerHttpRequest.Builder mutate, String name, Object value)
{
if (value == null)
{
return;
}
String valueStr = value.toString();
String valueEncode = ServletUtils.urlEncode(valueStr);
mutate.header(name, valueEncode);
}
private void removeHeader(ServerHttpRequest.Builder mutate, String name)
{
mutate.headers(httpHeaders - httpHeaders.remove(name)).build();
}
private MonoVoid unauthorizedResponse(ServerWebExchange exchange, String msg)
{
log.error("[鑒權(quán)異常處理]請(qǐng)求路徑:{}", exchange.getRequest().getPath());
return ServletUtils.webFluxResponseWriter(exchange.getResponse(), msg, HttpStatus.UNAUTHORIZED);
}
/**
* 獲取緩存key
*/
private String getTokenKey(String token)
{
return CacheConstants.LOGIN_TOKEN_KEY + token;
}
/**
* 獲取請(qǐng)求token
*/
private String getToken(ServerHttpRequest request)
{
String token = request.getHeaders().getFirst(TokenConstants.AUTHENTICATION);
// 如果前端設(shè)置了令牌前綴,則裁剪掉前綴
if (StringUtils.isNotEmpty(token) token.startsWith(TokenConstants.PREFIX))
{
token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY);
}
return token;
}
@Override
public int getOrder()
{
return -200;
}
}
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package com.ruoyi.gateway.config.properties;
import java.util.ArrayList;
import java.util.List;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
/**
* 放行白名單配置
*
* @author ruoyi
*/
@Configuration
@RefreshScope
@ConfigurationProperties(prefix = "security.ignore")
public class IgnoreWhiteProperties
{
/**
* 放行白名單配置,網(wǎng)關(guān)不校驗(yàn)此處的白名單
*/
private ListString whites = new ArrayList();
public ListString getWhites()
{
return whites;
}
public void setWhites(ListString whites)
{
this.whites = whites;
}
}
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
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
啟動(dòng)代碼并測(cè)試
?
已經(jīng)走到了sytem模塊中,并且沒有進(jìn)行登錄;說(shuō)明我們的配置已經(jīng)生效
文章知識(shí)點(diǎn)與官方知識(shí)檔案匹配
Java技能樹首頁(yè)概覽
84637 人正在系統(tǒng)學(xué)習(xí)中
打開CSDN,閱讀體驗(yàn)更佳
Amazon API Gateway使用IP白名單控制后端服務(wù)訪問_亞林瓜子的博客-CSD...
異地IP驗(yàn)證 使用移動(dòng)IP調(diào)用,請(qǐng)求被拒絕了。 白名單IP驗(yàn)證 同樣的請(qǐng)求,在白名單中的IP就可以正常請(qǐng)求。 總結(jié) 這里使用的AWS中國(guó)北京地區(qū)的API Gateway服務(wù),通過策略控制對(duì)后臺(tái)服務(wù)的訪問控制。
SpringCloud Gateway網(wǎng)關(guān)配置(二)接口訪問IP白名單配置(真實(shí)IP)
SpringCloud Gateway網(wǎng)關(guān)配置中,需要對(duì)訪問的IP設(shè)置白名單,SpringCloud Gateway官方給出YML配置文件配置。 如下: 5.10. The RemoteAddr Route Predicate Factory The RemoteAddr route predicate factory takes a list (min size 1) of so...
Spring Cloud Gateway 網(wǎng)關(guān)實(shí)現(xiàn)白名單功能
對(duì)于微服務(wù)后臺(tái)而言,網(wǎng)關(guān)層作為所有網(wǎng)絡(luò)請(qǐng)求的入口。一般基于安全考慮,會(huì)在網(wǎng)關(guān)層做權(quán)限認(rèn)證,但是對(duì)于一些例如登錄、注冊(cè)等接口以及一些資源數(shù)據(jù),這些是不需要有認(rèn)證信息,因此需要在網(wǎng)關(guān)層設(shè)計(jì)一個(gè)白名單的功能。本文將基于 Spring Cloud Gateway 2.X 實(shí)現(xiàn)白名單功能。注意事項(xiàng): Gateway 網(wǎng)關(guān)層的白名單實(shí)現(xiàn)原理是在過濾器內(nèi)判斷請(qǐng)求地址是否符合白名單,如果通過則跳過當(dāng)前過濾器。如果有多個(gè)過濾器,則需要在每一個(gè)過濾器里邊添加白名單判斷。......
繼續(xù)訪問
若依vue分離版(ruoyi-vue)跳過token驗(yàn)證,設(shè)置白名單
找到SecurityConfig類的configure方法 如圖所示 在設(shè)置白名單后還需要把接口上的權(quán)限標(biāo)識(shí)符去掉。然后需要重啟一下項(xiàng)目,熱加載不行,會(huì)報(bào)錯(cuò)。
繼續(xù)訪問
?
Kong Gateway - 13 基于網(wǎng)關(guān)服務(wù)的IP白名單限制訪問(Whitelist IP Restri...
為名稱為book的服務(wù)的路由{route_id啟用IP白名單限制訪問其中192.168.10.50表示限制macOS系統(tǒng)這一臺(tái)計(jì)算機(jī)不能訪問book服務(wù)的路由其中192.168.43.0/24表示限制IP地址是192.168.43這一整個(gè)網(wǎng)段的IP都不能訪問book服務(wù)的路由(Windows 10在此...
服務(wù)網(wǎng)關(guān):Gateway_青銅造白的博客
可以實(shí)現(xiàn)日志攔截、權(quán)限控制、解決跨域、限流、熔斷、負(fù)載均衡,隱藏服務(wù)端的ip,黑名單與白名單攔截、授權(quán)等。 二:gateway的核心概念 1、Route(路由):就是轉(zhuǎn)發(fā)規(guī)則 Spring Cloud Gateway的基礎(chǔ)元素,可簡(jiǎn)單理解成一條轉(zhuǎn)發(fā)的規(guī)則。包含:ID...
SpringCloud Gateway網(wǎng)關(guān)配置(二)接口訪問IP白名單配置(真實(shí)IP)
SpringCloud Gateway網(wǎng)關(guān)配置中,需要對(duì)訪問的IP設(shè)置白名單,SpringCloud Gateway官方給出YML配置文件配置。 如下: 5.10. The RemoteAddr Route Predicate Factory The RemoteAddr route predicate factory takes a list (min size 1) of sources, which are CIDR-notation (IPv4 or IPv6) strings, such as 1
繼續(xù)訪問
nacos權(quán)限認(rèn)證(二) 開啟權(quán)限認(rèn)證
直接設(shè)置下述屬性為true,就可以避免 nacos權(quán)限認(rèn)證(一) 中的問題。 這個(gè)時(shí)候再訪問nacos頁(yè)面,則會(huì)直接報(bào)錯(cuò)。因此,還需要再設(shè)置兩個(gè)屬性(數(shù)值可以隨便填)。添加好這兩個(gè)屬性時(shí)頁(yè)面就能正常訪問了。注意:如果你遇到這種情況,只需要關(guān)閉提示,點(diǎn)擊用戶名,登出,然后重新登錄即可。這個(gè)時(shí)候,如果你加修改直接啟動(dòng)其他服務(wù),則其他服務(wù)無(wú)法正常連接nacos,也需要坐一番配置。需要再其他服務(wù)的配置文件中加上如下配置。 這樣,其他服務(wù)就能正常連接nacos了。至此,nacos的權(quán)限漏洞問題就解決了。
繼續(xù)訪問
?
若依RuoYi-Cloud代碼學(xué)習(xí)三---ruoyi-gateway擴(kuò)展gateway網(wǎng)關(guān)組件的知識(shí)
一、API 網(wǎng)關(guān)概述 作為微服務(wù)的門面,應(yīng)用于服務(wù)數(shù)量眾多、復(fù)雜度較高、規(guī)模比較大的系統(tǒng)。 優(yōu)點(diǎn): 客戶端通過 API 網(wǎng)關(guān)與微服務(wù)交互時(shí),客戶端只需要知道 API 網(wǎng)關(guān)地址即可,而不需要維護(hù)大量的服務(wù)地址,簡(jiǎn)化了客戶端的開發(fā)。 客戶端直接與 API 網(wǎng)關(guān)通信,能夠減少客戶端與各個(gè)服務(wù)的交互次數(shù)。 客戶端與后端的服務(wù)耦合度降低。 節(jié)省流量,提高性能,提升用戶體驗(yàn)。 API 網(wǎng)關(guān)還提供了安全、流控、過濾、緩存、計(jì)費(fèi)以及監(jiān)控等 API 管理功能。 常見API 網(wǎng)關(guān)實(shí)現(xiàn)方案 Spring Cloud G
繼續(xù)訪問
熱門推薦 GateWay中添加白名單
最近開發(fā)中有一個(gè)鑒權(quán)的操作,最后需要進(jìn)行添加白名單的,廢話不多說(shuō),直接上代碼吧, 這是我的項(xiàng)目結(jié)構(gòu) applicaton啟動(dòng)類: import org.springframework.boot.SpringApplication; import org.springframework.cloud.client.SpringCloudApplication; import org.spr...
繼續(xù)訪問
?
Spring Gateway+白名單+docker
域名解析 從物理機(jī)上調(diào)用外部服務(wù)正常,但是docker里的java服務(wù)去調(diào)用卻有問題。 答案 docker并不能使用宿主機(jī)的host配置信息 為每一個(gè)http請(qǐng)求定制header 如果在RouteLocatorBuilder里設(shè)置header的話就會(huì)對(duì)所有http request生效,如果為了對(duì)每個(gè)request請(qǐng)求使用不同header需要如下設(shè)置 @Configuration public cl...
繼續(xù)訪問
GateWay網(wǎng)關(guān)應(yīng)用案例(跨域、限流、黑白名單)
Spring Cloud Gateway是基于Spring Boot 2.x,Spring WebFlux和Project Reactor 構(gòu)建的。屬于異步非阻塞架構(gòu) Spring Cloud Gateway與Spring Data 和Spring Securit 技術(shù)不能同時(shí)使用 Spring Cloud Gateway基于Spring Boot和Spring Webflux提供的Netty運(yùn)行。它在傳統(tǒng)的Servlet容器中或用WAR的方式構(gòu)建時(shí)不起作用 網(wǎng)關(guān)基本的功能 :鑒權(quán)、流量控制、熔斷、路徑重寫
繼續(xù)訪問
?
ruoyi分離版前端白名單
ruoyi分離版前端白名單 先在router下的index.js中加上需要添加的路由 之后再permission.js下的whiteList中加上上面添加的路由就可以了 后端的接口 接口白名單 /**是匹配路徑下的所有接口,也可以直接指定某一個(gè)具體的接口 ...
繼續(xù)訪問
若依后端gateway模塊解決跨域問題
跨域問題
繼續(xù)訪問
?
微服務(wù)項(xiàng)目在gateway網(wǎng)關(guān)配置路徑訪問白名單
網(wǎng)關(guān)的鑒權(quán):權(quán)限身份認(rèn)證作用實(shí)際上就是由一串組合起來(lái)的過濾器實(shí)現(xiàn)的, 過濾器的自定義過程就是實(shí)現(xiàn)兩個(gè)接口org.springframework.cloud.gateway.filter.GlobalFilter和org.springframework.core.Ordered 通過重寫org.springframework.cloud.gateway.filter.GlobalFilter中的filter方法來(lái)定義過濾的邏輯 通過重寫org.springframework.core.Ordered中的get
繼續(xù)訪問
若依微服務(wù)SpringCloud—使用Spring Cloud Gateway網(wǎng)關(guān)
一.API網(wǎng)關(guān) API網(wǎng)關(guān),就是指系統(tǒng)的統(tǒng)一入口,它封裝來(lái)應(yīng)用程序的內(nèi)部結(jié)構(gòu),為客戶端提供統(tǒng)一服務(wù),一些與業(yè)務(wù)本身功能無(wú)關(guān)的公共邏輯可以在這里實(shí)現(xiàn),諸如認(rèn)證,鑒權(quán),監(jiān)控,路由轉(zhuǎn)發(fā)等等。 二.業(yè)界流行的網(wǎng)關(guān) (1)Ngnix+lua :使用nginx的反向代理和負(fù)載均衡可實(shí)現(xiàn)api服務(wù)器的負(fù)載均衡及高可用。lua是一種腳步語(yǔ)言,可以來(lái)編寫一些簡(jiǎn)單的nginx支持lua腳本。 (2)Kong:基于Nginx+Lua開發(fā),性能高,穩(wěn)定,有多個(gè)可用的插件(限流,鑒權(quán)等等)可以開箱即用。缺點(diǎn):只支持http協(xié)
繼續(xù)訪問
?
最新發(fā)布 若依前后端分離ruoyi-vue請(qǐng)求添加白名單403
【代碼】若依前后端分離ruoyi-vue請(qǐng)求添加白名單403。
繼續(xù)訪問
?
Nacos配置與踩坑總結(jié)
核心問題: 1.不同域名,走不同配置 2.開關(guān)、配置、JSON三種配置類型 解決方案 設(shè)計(jì)思路: 1.分三大類: 業(yè)務(wù)配置、域名配置、域名自定義配置 業(yè)務(wù)配置:用于配置所有業(yè)務(wù)中的配置信息 針對(duì)業(yè)務(wù)情況,分為三類業(yè)務(wù)配置:開關(guān)配置、基礎(chǔ)配置、數(shù)據(jù)配置(黑/白名單) 每種配置都為單獨(dú)的nacos 針對(duì)大促情況:將三類配置各自再兩個(gè)環(huán)境配置,共三個(gè)環(huán)境配置,方便在不同配置環(huán)境中自由切換 域名配置:用于配置域名走哪個(gè)配置環(huán)境,實(shí)現(xiàn)出現(xiàn)問題快速將某域名切換到不同環(huán)境 域
繼續(xù)訪問
?
微服務(wù)網(wǎng)關(guān)springcloud gateway自定義全局過濾器
微服務(wù)網(wǎng)關(guān)springcloud gateway自定義全局過濾器
繼續(xù)訪問
ruoyi-spring boot 升級(jí)為nacos配置
springboot集成nacos
繼續(xù)訪問
若依Cloud之旅(二):一次登錄到出現(xiàn)界面,若依做了什么?
若依一次登錄到出現(xiàn)界面的三個(gè)接口都做了什么
繼續(xù)訪問
?
實(shí)現(xiàn)登錄驗(yàn)證
最近練習(xí)搭建了一個(gè)后臺(tái)管理系統(tǒng),首先第一步做了關(guān)于驗(yàn)證登錄的功能.以下項(xiàng)目使用了Nacos作為服務(wù)發(fā)現(xiàn)和注冊(cè)中心,將Auth和gateway,system等相關(guān)多個(gè)微服務(wù)注冊(cè)進(jìn)Nacos.每次刷新登錄頁(yè)面,就會(huì)獲取新的驗(yàn)證碼(,輸入正確的驗(yàn)證碼即可成功跳轉(zhuǎn)至首頁(yè). 獲取驗(yàn)證碼url: - dev-api是前端設(shè)置的反向代理,實(shí)際訪問的是網(wǎng)關(guān)路徑和端口.即在網(wǎng)關(guān)gateway模塊做了路由轉(zhuǎn)發(fā).返回給前端 /** * 路由轉(zhuǎn)發(fā)...
繼續(xù)訪問
若依前后端分離-免登錄
項(xiàng)目需要對(duì)若依進(jìn)行不輸入賬號(hào)密碼的登錄,所以臨時(shí)進(jìn)行修改,增加獲取不到token時(shí),判斷是否攜帶了某個(gè)特殊參數(shù),有就用默認(rèn)的賬號(hào)密碼調(diào)用登錄達(dá)到驗(yàn)證登錄的需求。 // 沒有token if (whiteList.indexOf(to.path) !== -1) { // 在免登錄白名單,直接進(jìn)入 next() } else if (to.query.index === '1') { let..
繼續(xù)訪問
?
gateway白名單
gateway
java軟件沒有來(lái)電黑名單或者來(lái)電歸屬地之類的軟件,java不能控制諾基亞手機(jī)的來(lái)電部分,因?yàn)橄到y(tǒng)本身沒有提供這種接口。
所以不用費(fèi)心思找了。
新版的QQ 是用樹實(shí)現(xiàn)的...
然后每個(gè)子結(jié)點(diǎn)是 好友..
老版的QQ 具體也不清楚
如果讓我做 可以用JButton+JTable實(shí)現(xiàn) 或者JButton+JTree
不過我覺得 還是完全用樹比較簡(jiǎn)單
你可以參照下 QQ 2009 PRE版
兩種方法。
一種是建一張黑名單表,對(duì)用戶進(jìn)行黑名單操作之后往表中添加數(shù)據(jù)。用戶登錄時(shí)查詢這張表,存在就不允許登錄什么的,這得看具體需求。
第二種是給用戶表添加一個(gè)字段來(lái)表示用戶狀態(tài),進(jìn)行拉黑操作時(shí)更改該自段的值。
java代碼中設(shè)置白名單可以用命令,對(duì)白名單的內(nèi)容進(jìn)行放行。而黑名單中的內(nèi)容,可以用命令,讓其停止運(yùn)行。
分享文章:JAVA代碼實(shí)現(xiàn)黑白名單 java實(shí)現(xiàn)用戶黑名單功能
分享網(wǎng)址:http://chinadenli.net/article40/hgpjeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、企業(yè)網(wǎng)站制作、建站公司、軟件開發(fā)、網(wǎng)站收錄、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容