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

网站快照建站之星备案

网站快照,建站之星备案,上海快速建站,自己建个网站1.JWT工具AuthProperties:配置登录校验需要拦截的路径,因为不是所有的路径都需要登录才能访问JwtProperties:定义与JWT工具有关的属性,比如秘钥文件位置SecurityConfig:工具的自动装配JwtTool:JWT工具&…

1.JWT工具

AuthProperties:配置登录校验需要拦截的路径,因为不是所有的路径都需要登录才能访问

JwtProperties:定义与JWT工具有关的属性,比如秘钥文件位置

SecurityConfig:工具的自动装配

JwtTool:JWT工具,其中包含了校验和解析token的功能

hmall.jks:秘钥文件

AuthPropertiesJwtProperties所需的属性要在application.yaml中配置:

hm:jwt:location: classpath:hmall.jks # 秘钥地址alias: hmall # 秘钥别名password: hmall123 # 秘钥文件密码tokenTTL: 30m # 登录有效期auth:excludePaths: # 无需登录校验的路径- /search/**- /users/login- /items/**

定义一个登录校验的过滤器(AuthGlobalFilter):

package com.hmall.gateway.filter;import com.hmall.common.exception.UnauthorizedException;
import com.hmall.common.utils.CollUtils;
import com.hmall.gateway.config.AuthProperties;
import com.hmall.gateway.util.JwtTool;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
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.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;import java.util.List;@Component
@RequiredArgsConstructor
@EnableConfigurationProperties(AuthProperties.class)
public class AuthGlobalFilter implements GlobalFilter, Ordered {private final JwtTool jwtTool;private final AuthProperties authProperties;private final AntPathMatcher antPathMatcher = new AntPathMatcher();@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 1.获取RequestServerHttpRequest request = exchange.getRequest();// 2.判断是否不需要拦截if(isExclude(request.getPath().toString())){// 无需拦截,直接放行return chain.filter(exchange);}// 3.获取请求头中的tokenString token = null;List<String> headers = request.getHeaders().get("authorization");if (!CollUtils.isEmpty(headers)) {token = headers.get(0);}// 4.校验并解析tokenLong userId = null;try {userId = jwtTool.parseToken(token);} catch (UnauthorizedException e) {// 如果无效,拦截ServerHttpResponse response = exchange.getResponse();response.setRawStatusCode(401);return response.setComplete();}// TODO 5.如果有效,传递用户信息System.out.println("userId = " + userId);// 6.放行return chain.filter(exchange);}private boolean isExclude(String antPath) {for (String pathPattern : authProperties.getExcludePaths()) {if(antPathMatcher.match(pathPattern, antPath)){return true;}}return false;}@Overridepublic int getOrder() {return 0;}
}

http://www.dtcms.com/a/409049.html

相关文章:

  • 安徽做网站的公司公众号开发微商城
  • 网站图片放大特效怎么做个人怎么做购物网站
  • 那个网站可以做全景图seo推广技术培训
  • 常规做网站要在工信部认证吗做网站哪里有
  • 网站开发网站设计的标准网页制作讲解视频
  • .net网站开发免费教程客户管理软件crm
  • 做淘宝的网站有哪些个人建设什么网站
  • 十堰市建设工程管理处网站html制作旅游景点网页
  • 网站怎么换服务器中国上海门户网站
  • 做一年的网站维护价格网络营销策划方案框架
  • 网站跟网页的区别是什么门户网站定制
  • 电销做网站的话术淘宝搜索排名
  • 全网最低价业务网站建设网上银行查询
  • 网站文章列表模板北京正规网站建设比较
  • 重庆网站建设红旗河沟成立网站建设公司要求
  • 运营公开网是什么网站网站关键词优化方案
  • 站长平台有哪些国内做视频网站需要啥
  • wordpress站中站wordpress采集 知乎
  • 劳保用品 技术支持 东莞网站建设商城模板建站价格
  • 万江网站建设免费一级域名网站
  • 官方网站开发公司排名学院网站建设通知
  • 站长之家排行榜地方网站建设
  • 定制做网站设计青海网页设计
  • 小型企业网站建设旅游景点网论文上海公司注册一网通办
  • 久久营销网站有什么网站做任务给钱的
  • 北京微信网站制作电话中国建设银行陕西分行官方网站
  • 做家纺网站哪家好芜湖的网站建设公司
  • 网站基础风格创建深圳市律师网站建设怎么样
  • 基础型网站套餐张家界网络
  • 公司 网站 方案WordPress怎么添加语言