中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

建站平臺(tái)入口關(guān)鍵詞排名優(yōu)化怎么樣

建站平臺(tái)入口,關(guān)鍵詞排名優(yōu)化怎么樣,WordPress用oss內(nèi)網(wǎng),新開(kāi)傳奇網(wǎng)站sf123本文使用springcloud的gateway做token校驗(yàn) 登錄的本質(zhì)&#xff1a;拿用戶(hù)名和密碼 換 token。 token會(huì)返回給瀏覽器&#xff08;存儲(chǔ)&#xff09;&#xff0c;當(dāng)訪問(wèn)的時(shí)候&#xff0c;攜帶token 發(fā)起請(qǐng)求。 token校驗(yàn)圖 引入redis依賴(lài) <dependency><groupId>or…

本文使用springcloud的gateway做token校驗(yàn)
登錄的本質(zhì):拿用戶(hù)名和密碼 換 token。
token會(huì)返回給瀏覽器(存儲(chǔ)),當(dāng)訪問(wèn)的時(shí)候,攜帶token 發(fā)起請(qǐng)求。

  1. token校驗(yàn)圖

在這里插入圖片描述

  1. 引入redis依賴(lài)在這里插入圖片描述

    		<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
    
  2. token校驗(yàn)過(guò)濾器
    在這里插入圖片描述

package com.example.filter;import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
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.core.io.buffer.DataBuffer;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;/*** token 校驗(yàn)*/
@Component
public class TokenCheckFilter implements GlobalFilter, Ordered {//GlobalFilter全局過(guò)濾器,Ordered 順序優(yōu)先級(jí)@Autowiredprivate StringRedisTemplate redisTemplate; //引入redis依賴(lài),才能使用/*** 指定好放行的路徑  (可以寫(xiě)在這,也可以寫(xiě)到配置文件中)* 白名單 (請(qǐng)求路徑)*/public static final List<String> ALLOW_URL = Arrays.asList("login-service/doLogin","/myUrl");/***前提是? 和前端約定好,一般放在請(qǐng)求頭中  key=Authorization, value=bearer token    (前綴:bearer+空格+token)* 1.拿到url  (GlobalFilter是全局過(guò)濾器,  但是,登錄 沒(méi)有token,要放行)* 2.判斷放行   (登錄+白名單 放行,不需要token)* 然后再校驗(yàn)token* 3.拿到 請(qǐng)求頭* 4.拿到token* 5.校驗(yàn) (看redis 中 有沒(méi)有,如果沒(méi)有就攔截,有就放行)* 6.放行/攔截** @param exchange* @param chain* @return*/@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {//拿到url    請(qǐng)求路徑ServerHttpRequest request = exchange.getRequest();String path = request.getURI().getPath();if (ALLOW_URL.contains(path)){//放行return chain.filter(exchange);}//校驗(yàn)HttpHeaders headers = request.getHeaders(); //拿到請(qǐng)求頭List<String> authorization = headers.get("Authorization");if (!CollectionUtils.isEmpty(authorization)){ //key不為空,取第一個(gè)String token = authorization.get(0);if (StringUtils.hasText(token)){ //token不空//約定好有前綴 bearer tokenString realToken = token.replaceFirst("bearer ", "");// replaceFirst替換字符串前面if (StringUtils.hasText(realToken) && redisTemplate.hasKey(realToken)){//如果 請(qǐng)求頭中 有token, 并且 redis中 有這個(gè)token(不帶前綴)//放行return chain.filter(exchange);}}}//攔截ServerHttpResponse response = exchange.getResponse();response.getHeaders().set("content-type","application/json;charset=utf-8");HashMap<String, Object> map = new HashMap<>(4);//返回401map.put("code", HttpStatus.UNAUTHORIZED.value());map.put("msg","未授權(quán)");ObjectMapper objectMapper = new ObjectMapper();byte[] bytes = new byte[0]; //以字節(jié)形式 寫(xiě)到objectmappertry {bytes = objectMapper.writeValueAsBytes(map);} catch (JsonProcessingException e) {throw new RuntimeException(e);}DataBuffer wrap = response.bufferFactory().wrap(bytes);return response.writeWith(Mono.just(wrap));}@Overridepublic int getOrder() {return 2; //先校驗(yàn)ip,再校驗(yàn)token}
}
  1. 流程:

    前提: 和前端約定好
    token一般放在請(qǐng)求頭中 key=Authorization, value=bearer token
    (前綴:bearer+空格+token)

    • 1.拿到url (GlobalFilter是全局過(guò)濾器, 但是,登錄 沒(méi)有token,要放行)
    • 2.判斷放行 (登錄+白名單 放行,不需要token)
    • 然后再校驗(yàn)token
    • 3.拿到 請(qǐng)求頭
    • 4.拿到token
    • 5.校驗(yàn) (看redis 中 有沒(méi)有,如果沒(méi)有就攔截,有就放行)
    • 6.放行/攔截
http://www.risenshineclean.com/news/47220.html

相關(guān)文章:

  • 武昌做網(wǎng)站哪家專(zhuān)業(yè)競(jìng)價(jià)賬戶(hù)托管公司哪家好
  • 江油移動(dòng)網(wǎng)站建設(shè)推廣平臺(tái)
  • 上海房產(chǎn)做哪個(gè)網(wǎng)站好上海關(guān)鍵詞優(yōu)化推薦
  • 北京網(wǎng)站制作公司清遠(yuǎn)新聞?lì)^條新聞
  • 四川監(jiān)獄網(wǎng)站建設(shè)發(fā)布外鏈
  • 常用的網(wǎng)站推廣的方式方法搜索引擎優(yōu)化的基礎(chǔ)是什么
  • 用php做網(wǎng)站營(yíng)銷(xiāo)型網(wǎng)站的特點(diǎn)
  • 網(wǎng)站做目錄中搜索引擎優(yōu)化案例分析
  • 做動(dòng)態(tài)h5的網(wǎng)站b站視頻推廣網(wǎng)站2023
  • 代理做網(wǎng)站怎么樣如何做企業(yè)網(wǎng)頁(yè)
  • b2b網(wǎng)站怎么建設(shè)免費(fèi)做網(wǎng)站怎么做網(wǎng)站
  • 大連市建設(shè)工程網(wǎng)官網(wǎng)seo快速整站上排名教程
  • 做外貿(mào)必應(yīng)網(wǎng)站產(chǎn)品曝光南京廣告宣傳公司seo
  • 洞口網(wǎng)站建設(shè)寧德seo公司
  • 蘭州做網(wǎng)站多少錢(qián)關(guān)鍵詞首頁(yè)排名優(yōu)化價(jià)格
  • 做網(wǎng)站需要的技術(shù) 規(guī)范北京百度關(guān)鍵詞推廣
  • 快速網(wǎng)站優(yōu)化哪家好推廣一單500
  • 開(kāi)發(fā)一套網(wǎng)站系統(tǒng) 多少錢(qián)湘潭營(yíng)銷(xiāo)型網(wǎng)站建設(shè)
  • 進(jìn)行網(wǎng)站建設(shè)網(wǎng)頁(yè)制作學(xué)習(xí)
  • 贛州網(wǎng)站制作百度網(wǎng)站電話(huà)是多少
  • dedecms 網(wǎng)站訪問(wèn)量重慶seo整站優(yōu)化系統(tǒng)
  • 寶雞做網(wǎng)站的公司磁力鏈 ciliba
  • 華為建站模板seo 網(wǎng)站推廣
  • 網(wǎng)站建設(shè)效果好不好seo對(duì)網(wǎng)店推廣的作用
  • 做網(wǎng)站要注意的撫州網(wǎng)站seo
  • 如何用服務(wù)器發(fā)布網(wǎng)站公司培訓(xùn)課程有哪些
  • 進(jìn)下加強(qiáng)新聞宣傳網(wǎng)站建設(shè)上海百度seo
  • h5手機(jī)網(wǎng)站怎么做互聯(lián)網(wǎng)營(yíng)銷(xiāo)師考試題庫(kù)
  • 西安最好的網(wǎng)站建設(shè)公司網(wǎng)絡(luò)營(yíng)銷(xiāo)網(wǎng)站分析
  • 淄博政府網(wǎng)站建設(shè)公司百度商業(yè)賬號(hào)登錄