关于会话技术的总结

会话是用户浏览器与web服务器之间的交互过程,会话跟踪用于维持浏览器状态。常见的会话跟踪技术包括Cookie、Session和JWT。JWT是一种安全的令牌技术,由头、载荷和签名三部分组成,常用于登录认证。生成和验证JWT需要匹配的签名密钥,若校验失败则表明令牌被篡改或失效。
摘要由CSDN通过智能技术生成
 

--------------------------------------------------------------------------------------------------------------------

什么是会话?会话就是用户使用浏览器,访问web服务器资源,会话建立,直到有一方断开连接,会话结束.再一次会话中可以包含多次请求和响应。

会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同义词会话的多次请求间共享数据。

会话跟踪方案:

①:客户端跟踪技术Cookie。

②:服务端会话跟踪技术:Seeion。

③:令牌技术。

会话跟踪方案对比

 

令牌技术:JWT(JSON Web Token)  https://jwt.io/

定义了一种简洁的、自包含的格式,用于在通信双方一json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的。

JWT的组成:

        第一部分:Header(头),记录令牌类型,签名算法等

        第二部分:Payload(有效荷载),携带一些自定义信息,默认信息等.

        第三部分:Signature(签名),防止Token被篡改,确保安全性。将header,payload,,并加入指定秘钥,通过签名算法计算而来。

JWT最典型的用途就是登陆认证.

场景:登陆认证.

①:登陆成功后,生成令牌。

②:后续每个请求,都要携带JWT令牌,系统在每次请求处理之前,先校验令牌,通过后再处理。

基于java生成JWT令牌依赖引入

        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>

 代码演示:

     /**
     * 生成JWT令牌
     */
@Test
    public void testGenJwt(){
        
        Map<String,Object> claims = new HashMap<>();
        claims.put("id",1);
        claims.put("name","tom");
        String itws = Jwts.builder()
                .signWith(SignatureAlgorithm.HS256, "itws") //设置签名算法
                .setClaims(claims) //设置自定义内容(载荷)
                .setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000)) //设置有效期为一个小时
                .compact();//生成JWT令牌
        System.out.println(itws);
    }
    /**
     * 解析令牌
     */
    @Test
    public void testParseJwt(){
        Claims claims = Jwts
                .parser()
                .setSigningKey("itws")
                .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoidG9tIiwiaWQiOjEsImV4cCI6MTY4MTgzMDYyMX0.jeU-BQcQ80T4XxweuBeJraP9YvOZhcRly3LQjBJp49g")
                .getBody();
        System.out.println(claims);
    }

 注意事项:JWT校验时使用的签名密钥,必须和生成JWT令牌是使用的秘钥配套。

如果JWT令牌解析校验时报错,则说明JWT令牌被篡改 或者失效了,令牌非法。

@ConfigurationProperties(prefix = "aliyun.oss")与@Value("${aliyun.oss.endpoint}")

相同点:都是用来注入外部配置的属性的。

不同点:@Value注解只能一个一个的进行外部属性的注入。

            @ConfigurationProperties可以批量的将外部的属性配置注入到bean对象的属性中。

Base64:是一种基于64个可打印字符(A-Z,a-z,0-9 + /)来表示二进制数据的编码方式。当然,这里还有一个(=)号,这是一个补位的符号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值