A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

3.6.3.3 验证jwt令牌
[AppleScript] 纯文本查看 复制代码
//资源服务使用公钥验证jwt的合法性,并对jwt解码   
  @Test  
   public void testVerify(){    
     //jwt令牌   
      String token  ="eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHQiOiIxIiwicm9sZXMiOiJyMDEscjAyIiwibmFtZSI6Im1ydCIsI mlkIjoiMTIzIn0.KK7_67N5d1Dthd1PgDHMsbi0UlmjGRcm_XJUUwseJ2eZyJJWoPP2IcEZgAU3tUaaKEHUf9wSRwaDgwhrw fyIcSHbs8oy3zOQEL8j5AOjzBBs7vnRmB7DbSaQD7eJiQVJOXO1QpdmEFgjhc_IBCVTJCVWgZw60IEW1_Lg5tqaLvCiIl26K 48pJB5f‐le2zgYMzqR1L2LyTFkq39rG57VOqqSCi3dapsZQd4ctq95SJCXgGdrUDWtD52rp5o6_0uqmrbRdRxkrQfsa1j8C5IW2‐T4eUmiN3f9wF9JxUK1__XC1OQkOn‐ZTBCdqwWIygDFbU7sf6KzfHJTm5vfjp6NIA";      
   //公钥     
    String publickey = "‐‐‐‐‐BEGIN PUBLIC KEY‐‐‐‐MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAijyxMdq4S6L1Af1rtB8SjCZHNgsQG8JTfGy55eYvzG0B/E4AudR2 prSRBvF7NYPL47scRCNPgLnvbQczBHbBug6uOr78qnWsYxHlW6Aa5dI5NsmOD4DLtSw8eX0hFyK5Fj6ScYOSFBz9cd1nNTvx 2+oIv0lJDcpQdQhsfgsEr1ntvWterZt/8r7xNN83gHYuZ6TM5MYvjQNBc5qC7Krs9wM7UoQuL+s0X6RlOib7/mcLn/lFLsLD dYQAZkSDx/6+t+1oHdMarChIPYT1sx9Dwj2j2mvFNDTKKKKAq0cv14Vrhz67Vjmz2yMJePDqUi0JYS2r0iIo7n8vN7s83v5u OQIDAQAB‐‐‐‐‐END PUBLIC KEY‐‐‐‐‐";         //校验jwt   
      Jwt jwt = JwtHelper.decodeAndVerify(token, new RsaVerifier(publickey));     
    //获取jwt原始内容     
    String claims = jwt.getClaims();   
      //jwt令牌     
    String encoded = jwt.getEncoded();   
      System.out.println(encoded);  
   } 

4 认证接口开发
4.1 需求分析
用户登录的流程图如下:


执行流程:
1、用户登录,请求认证服务
2、认证服务认证通过,生成jwt令牌,将jwt令牌及相关信息写入Redis,并且将身份令牌写入cookie
3、用户访问资源页面,带着cookie到网关
4、网关从cookie获取token,并查询Redis校验token,如果token不存在则拒绝访问,否则放行
5、用户退出,请求认证服务,清除redis中的token,并且删除cookie中的token
使用redis存储用户的身份令牌有以下作用:
1、实现用户退出注销功能,服务端清除令牌后,即使客户端请求携带token也是无效的。
2、由于jwt令牌过长,不宜存储在cookie中,所以将jwt令牌存储在redis,由客户端请求服务端获取并在客户端存 储。

4.2 Redis配置
4.2.1 安装Redis
1、安装Redis服务 下载Windows版本的redis:https://github.com/MicrosoftArchive/redis/tags
下载Redis-x64-3.2.100版本,解压Redis-x64-3.2.100.zip 进入cmd命令行,进入Redis-x64-3.2.100目录。
运行:

[AppleScript] 纯文本查看 复制代码
redis‐server redis.windows.conf

出现 下图说明 redis启动成功:


注册为服务:

[AppleScript] 纯文本查看 复制代码
redis‐server ‐‐service‐install redis.windows‐service.conf ‐‐loglevel verbose

刷新服务,会看到多了一个redis服务。


常用的redis服务命令如下:
进入redis安装目录: 卸载服务:redis-server.exe --service-uninstall
开启服务:redis-server.exe --service-start 停止服务:redis-server.exe --service-stop  
2、redis-desktop-manager 下载windows版本的redis客户端:https://redisdesktop.com/download 下载redis-desktop-manager-0.9.2.806.exe
安装后启动redis客户端: 配置redis链接:




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马