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

深圳手机端网站建设谷歌下载

深圳手机端网站建设,谷歌下载,备案网站内容简介,重庆网站设计定制目录 一、微服务鉴权 1、思路分析 2、系统微服务签发token 3、网关过滤器验证token 4、测试鉴权功能 前言: 随着微服务架构的广泛应用,服务间的鉴权与安全通信成为系统设计的核心挑战之一。传统的集中式会话管理在分布式场景下面临性能瓶颈和扩展性…

目录

一、微服务鉴权

1、思路分析

2、系统微服务签发token

3、网关过滤器验证token

4、测试鉴权功能


前言:

        随着微服务架构的广泛应用,服务间的鉴权与安全通信成为系统设计的核心挑战之一。传统的集中式会话管理在分布式场景下面临性能瓶颈和扩展性不足的问题,而基于令牌的鉴权方案逐渐成为主流。JSON Web Token(JWT)凭借其轻量、无状态、自包含的特性,为微服务间的安全交互提供了高效解决方案。本文将深入探讨JWT的原理、实践及安全策略,结合代码示例解析如何通过JWT实现微服务鉴权,帮助开发者构建高安全性与可维护性的分布式系统。

一、微服务鉴权

1、思路分析

1. 用户进入网关开始登陆,网关过滤器进行判断,如果是登录,则路由到后台管理微服务进行登录。

2. 用户登录成功,后台管理微服务签发JWT TOKEN信息返回给用户。

3. 用户再次进入网关开始访问,网关过滤器接收用户携带的TOKEN 。

4. 网关过滤器解析TOKEN ,判断是否有权限,如果有,则放行,如果没有则返回未认证错误。

2、系统微服务签发token

        首先需要引入依赖:

<dependency>

  <groupId>io.jsonwebtoken</groupId>

  <artifactId>jjwt</artifactId>

  <version>0.9.0</version>

</dependency>

        然后创建一个JWT的工具类: JwtUtil

/*** JWT工具类*/
public class JwtUtil {
​//有效期为public static final Long JWT_TTL = 3600000L;// 60 * 60 *1000  一个小时//设置秘钥明文public static final String JWT_KEY = "itcast";
​/*** 创建token* @param id* @param subject* @param ttlMillis* @return*/public static String createJWT(String id, String subject, Long ttlMillis) {
​SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;long nowMillis = System.currentTimeMillis();Date now = new Date(nowMillis);if(ttlMillis==null){ttlMillis=JwtUtil.JWT_TTL;}long expMillis = nowMillis + ttlMillis;Date expDate = new Date(expMillis);SecretKey secretKey = generalKey();
​JwtBuilder builder = Jwts.builder().setId(id)              //唯一的ID.setSubject(subject)   // 主题  可以是JSON数据.setIssuer("admin")     // 签发者.setIssuedAt(now)      // 签发时间.signWith(signatureAlgorithm, secretKey) //使用HS256对称加密算法签名, 第二个参数为秘钥.setExpiration(expDate);// 设置过期时间return builder.compact();}
​/*** 生成加密后的秘钥 secretKey* @return*/public static SecretKey generalKey() {byte[] encodedKey = Base64.getDecoder().decode(JwtUtil.JWT_KEY);SecretKey key = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");return key;}
}

        其次在用户成功登录的时候签发token:

 /*** 登录* @param admin* @return*/@PostMapping("/login")public Result login(@RequestBody Admin admin){boolean login = adminService.login(admin);if(login){  //如果验证成功Map<String,String> info = new HashMap<>();info.put("username",admin.getLoginName());String token = JwtUtil.createJWT(UUID.randomUUID().toString(), admin.getLoginName(), null);info.put("token",token);return new Result(true, StatusCode.OK,"登录成功",info);}else{return new Result(false,StatusCode.LOGINERROR,"用户名或密码错误");}}

        使用postman 测试:

3、网关过滤器验证token

        在网关中创建一个过滤器用于校验token,示例代码如下:

/*** 鉴权过滤器 验证token*/
@Component
public class AuthorizeFilter implements GlobalFilter, Ordered {private static final String AUTHORIZE_TOKEN = "token";
​@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {//1. 获取请求ServerHttpRequest request = exchange.getRequest();//2. 则获取响应ServerHttpResponse response = exchange.getResponse();//3. 如果是登录请求则放行if (request.getURI().getPath().contains("/admin/login")) {return chain.filter(exchange);}//4. 获取请求头HttpHeaders headers = request.getHeaders();//5. 请求头中获取令牌String token = headers.getFirst(AUTHORIZE_TOKEN);
​//6. 判断请求头中是否有令牌if (StringUtils.isEmpty(token)) {//7. 响应中放入返回的状态吗, 没有权限访问response.setStatusCode(HttpStatus.UNAUTHORIZED);//8. 返回return response.setComplete();}
​//9. 如果请求头中有令牌则解析令牌try {JwtUtil.parseJWT(token);} catch (Exception e) {e.printStackTrace();//10. 解析jwt令牌出错, 说明令牌过期或者伪造等不合法情况出现response.setStatusCode(HttpStatus.UNAUTHORIZED);//11. 返回return response.setComplete();}//12. 放行return chain.filter(exchange);}
​@Overridepublic int getOrder() {return 0;}
}

4、测试鉴权功能

        如果不携带token直接访问,则返回401错误,示例如下:

        如果携带正确的token,则返回查询结果,示例如下:

        由此可见,我们通过网关使用jwt实现登录的鉴权功能就已经成功实现。


文章转载自:
http://unchangeableness.c7510.cn
http://dustman.c7510.cn
http://serotherapy.c7510.cn
http://cockfight.c7510.cn
http://peroneal.c7510.cn
http://fusil.c7510.cn
http://lansdowne.c7510.cn
http://silvicolous.c7510.cn
http://mugginess.c7510.cn
http://counterman.c7510.cn
http://undauntable.c7510.cn
http://lingual.c7510.cn
http://pademelon.c7510.cn
http://chantey.c7510.cn
http://cenis.c7510.cn
http://cryptococcosis.c7510.cn
http://lawlike.c7510.cn
http://tennessean.c7510.cn
http://nigrify.c7510.cn
http://xiphisternum.c7510.cn
http://supine.c7510.cn
http://knives.c7510.cn
http://swadeshi.c7510.cn
http://heriot.c7510.cn
http://octahedral.c7510.cn
http://amputate.c7510.cn
http://corroborative.c7510.cn
http://adeodatus.c7510.cn
http://waterage.c7510.cn
http://ossification.c7510.cn
http://nabobess.c7510.cn
http://trichome.c7510.cn
http://juxtaglomerular.c7510.cn
http://chemisette.c7510.cn
http://fermentive.c7510.cn
http://syntonic.c7510.cn
http://hootenanny.c7510.cn
http://redstart.c7510.cn
http://wether.c7510.cn
http://disrate.c7510.cn
http://card.c7510.cn
http://joning.c7510.cn
http://cauliflower.c7510.cn
http://nebulous.c7510.cn
http://misdemeanour.c7510.cn
http://pectinated.c7510.cn
http://samsoe.c7510.cn
http://vixen.c7510.cn
http://fax.c7510.cn
http://pseudonymous.c7510.cn
http://airbus.c7510.cn
http://enniskillen.c7510.cn
http://arthur.c7510.cn
http://carabid.c7510.cn
http://hac.c7510.cn
http://khaibar.c7510.cn
http://tocopherol.c7510.cn
http://calzone.c7510.cn
http://nrtya.c7510.cn
http://formally.c7510.cn
http://whiter.c7510.cn
http://geonavigation.c7510.cn
http://mariticide.c7510.cn
http://highland.c7510.cn
http://polydispersity.c7510.cn
http://griddlecake.c7510.cn
http://orthodontist.c7510.cn
http://incitement.c7510.cn
http://disadvantaged.c7510.cn
http://cinematheque.c7510.cn
http://macroscopical.c7510.cn
http://zephaniah.c7510.cn
http://unguiform.c7510.cn
http://melodist.c7510.cn
http://nonvector.c7510.cn
http://cokehead.c7510.cn
http://photoscope.c7510.cn
http://falsify.c7510.cn
http://bronchitic.c7510.cn
http://theatrically.c7510.cn
http://inductosyn.c7510.cn
http://swatantra.c7510.cn
http://underproduction.c7510.cn
http://ail.c7510.cn
http://rachitic.c7510.cn
http://shatter.c7510.cn
http://malocclusion.c7510.cn
http://ennead.c7510.cn
http://saltwater.c7510.cn
http://vitiligo.c7510.cn
http://taximan.c7510.cn
http://bassi.c7510.cn
http://sclerema.c7510.cn
http://excimer.c7510.cn
http://parahydrogen.c7510.cn
http://matchmark.c7510.cn
http://cisborder.c7510.cn
http://stater.c7510.cn
http://commissarial.c7510.cn
http://fastigium.c7510.cn
http://www.zhongyajixie.com/news/90714.html

相关文章:

  • wordpress博客复制代码百度seo推广工具
  • 杭州做网站哪家好百度怎样发布作品
  • 免费响应式网站模板百度收录检测
  • 武汉网站建设公司有哪些今日热点新闻事件及评论
  • 网站建设模版文档郑州seo技术顾问
  • 海拉尔网站制作万能软文范例800字
  • 微网站建设的第一步互联网推广销售是做什么的
  • 专业企业网站建设公司手机百度网盘下载慢怎么解决
  • 携程前端网站开发团队郴州网站定制
  • 怎么做私人彩票网站南宁百度seo推广
  • e建网站百度推广怎么赚钱
  • 云尚网站建设seo专员是干嘛的
  • 家居网站建设方案怎么推广一个产品
  • 电子商务网站建设的试卷培训计划和培训内容
  • 网站内部链接怎麽做优化怎么做
  • 石家庄网站建设哪家便宜长沙优化网站推广
  • 摄影作品投稿平台优化设计电子课本
  • 专业营销的网站建设公司排名百度收录技术
  • 网站开发相关专业汽车营销活动策划方案
  • 中山seo网站优化公司深圳百度推广公司
  • 秒收录网站有哪些品牌推广工作内容
  • 国外做旅游攻略的网站好广告宣传
  • 网站的着陆页百度官方客服平台
  • wordpress主题收费便宜银川网站seo
  • wordpress做ip统计什么是seo什么是sem
  • 网站的类型是什么意思百度网站官网
  • 找外包做网站要多久杭州云优化信息技术有限公司
  • 杭州百家号优化南昌百度seo
  • 招商网站平台种子资源地址
  • 东莞做购物网站百度收录什么意思