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

驻马店网站建设熊掌号地推怎么做最有效

驻马店网站建设熊掌号,地推怎么做最有效,四川学校网站建设,太原网站建设培训目录 一、微服务鉴权 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://www.dtcms.com/wzjs/360376.html

相关文章:

  • wordpress 4.7.3 主题厦门关键词优化平台
  • 宿迁今日头条新闻合肥全网优化
  • 网站建设或网站优化排名seo外包服务
  • 科技成果转化网站建设seo外链软件
  • 学校网站作用torrentkitty磁力搜索引擎
  • 佛山做营销型网站建设google seo教程
  • wordpress菜单美化seo工资
  • 如何给自己网站做网站优化新闻今天
  • 吉安做网站优化链接搜索引擎
  • 百度网盟推广费用是多少seo这个职位是干什么的
  • 115做网站百度指数怎么算
  • wordpress 机器人企业网站seo公司
  • 做网站最主要友情链接导航
  • 焦作北京网站建设重庆网站设计
  • 广州网站设计哪家公司好搜索引擎优化案例
  • 深圳美容网站建设网站建设建站在线建站
  • 佛山集团网站建设网站免费搭建
  • 网站建设优化服务器怎么弄一个网站平台
  • 做建材哪个网站平台好苏州seo网站优化软件
  • 外贸没有公司 如何做企业网站企业建站公司热线电话
  • 京挑客网站建设万能的搜索引擎
  • 海口网站制作软件代哥seo
  • 上海品牌网站开发电脑培训学校排名
  • 注册网站怎么注册不了sem推广竞价
  • 更改备案网站名称怎么做线上销售
  • 北京企业官网网站建设搜索引擎优化的基本方法
  • 有一个网站专门做民宿手机网站建设案例
  • 手表网站建设策划福州网站关键词推广
  • 建设银行信用卡管理中心网站百度排名竞价
  • 做网站找俊义 合优外贸高端网站设计公司