当前位置: 首页 > news >正文

国内空间没备案可以打开网站吗免费海报制作网站

国内空间没备案可以打开网站吗,免费海报制作网站,1688拿货网,做类似电驴网站本文使用springcloud的gateway做token校验 登录的本质&#xff1a;拿用户名和密码 换 token。 token会返回给浏览器&#xff08;存储&#xff09;&#xff0c;当访问的时候&#xff0c;携带token 发起请求。 token校验图 引入redis依赖 <dependency><groupId>or…

本文使用springcloud的gateway做token校验
登录的本质:拿用户名和密码 换 token。
token会返回给浏览器(存储),当访问的时候,携带token 发起请求。

  1. token校验图

在这里插入图片描述

  1. 引入redis依赖在这里插入图片描述

    		<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
    
  2. token校验过滤器
    在这里插入图片描述

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 校验*/
@Component
public class TokenCheckFilter implements GlobalFilter, Ordered {//GlobalFilter全局过滤器,Ordered 顺序优先级@Autowiredprivate StringRedisTemplate redisTemplate; //引入redis依赖,才能使用/*** 指定好放行的路径  (可以写在这,也可以写到配置文件中)* 白名单 (请求路径)*/public static final List<String> ALLOW_URL = Arrays.asList("login-service/doLogin","/myUrl");/***前提是? 和前端约定好,一般放在请求头中  key=Authorization, value=bearer token    (前缀:bearer+空格+token)* 1.拿到url  (GlobalFilter是全局过滤器,  但是,登录 没有token,要放行)* 2.判断放行   (登录+白名单 放行,不需要token)* 然后再校验token* 3.拿到 请求头* 4.拿到token* 5.校验 (看redis 中 有没有,如果没有就拦截,有就放行)* 6.放行/拦截** @param exchange* @param chain* @return*/@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {//拿到url    请求路径ServerHttpRequest request = exchange.getRequest();String path = request.getURI().getPath();if (ALLOW_URL.contains(path)){//放行return chain.filter(exchange);}//校验HttpHeaders headers = request.getHeaders(); //拿到请求头List<String> authorization = headers.get("Authorization");if (!CollectionUtils.isEmpty(authorization)){ //key不为空,取第一个String token = authorization.get(0);if (StringUtils.hasText(token)){ //token不空//约定好有前缀 bearer tokenString realToken = token.replaceFirst("bearer ", "");// replaceFirst替换字符串前面if (StringUtils.hasText(realToken) && redisTemplate.hasKey(realToken)){//如果 请求头中 有token, 并且 redis中 有这个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","未授权");ObjectMapper objectMapper = new ObjectMapper();byte[] bytes = new byte[0]; //以字节形式 写到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; //先校验ip,再校验token}
}
  1. 流程:

    前提: 和前端约定好
    token一般放在请求头中 key=Authorization, value=bearer token
    (前缀:bearer+空格+token)

    • 1.拿到url (GlobalFilter是全局过滤器, 但是,登录 没有token,要放行)
    • 2.判断放行 (登录+白名单 放行,不需要token)
    • 然后再校验token
    • 3.拿到 请求头
    • 4.拿到token
    • 5.校验 (看redis 中 有没有,如果没有就拦截,有就放行)
    • 6.放行/拦截
http://www.yayakq.cn/news/548803/

相关文章:

  • 搭建什么网站好建筑方案设计作图题
  • 怎样在微信中做网站高级网页设计师证书
  • 正规不收费的网站企业网上购物系统
  • 东软集团建设网站广州番禺网站建设公司
  • 网站后台更新 前台不显示做品牌的人常用的网站
  • 网站权重对应的等级贵州网站建设模板
  • 购物网站制作例子建立网络平台要多少钱
  • 快速做网站的方法营销活动有哪些
  • 山西本土网站建设房产网签流程图
  • 西安建设科技专修学院网站我要注册电子邮箱
  • 丽泽桥网站建设外贸网站能用阿里云吗
  • 网站的横幅怎么做的windows优化大师是什么
  • 营销型网站建设 课程电子印章手机在线制作软件
  • 长沙建设网站网站优化排名软件
  • 网站优化哪家公司好四方坪网站建设
  • 网站建设延期合同书自建站价格
  • 巴中网站建设网站推广营销网站认识
  • 车票网站模板提供设计网站效果图
  • 做视频网站用什么语言前端学校网站开发视频教程
  • 企业展示型电商网站模板简约创意男装字体logo设计
  • 深圳响应式网站公司用js做自适应网站
  • 衡阳网站建设 千度网络深圳58网站建设
  • 权威网站排名嘉定网站建设电脑培训
  • 图片类网站开发实验总结遂宁商城网站建设报价
  • 个人博客网站开发毕业设计可以在哪些网站 APP做推广
  • 中企网站建设微博推广的方法
  • 如何免费建设一个网站网站建设具备哪些技术人员
  • 国外哪些网站做产品推广比较好兴县网站建设
  • 网站空间试用网页平面设计培训班
  • 网站首页大图怎么做长春房产网 房小二