面试点汇总

Java


JWT token

1. 什么是token认证?

基于token的用户认证是一种服务端无状态的认证方式,所谓服务端无状态指的token本身包含登录用户所有的相关数据,而客户端在认证后的每次请求都会携带token,因此服务器端无需存放token数据。

当用户认证后,服务端生成一个token发给客户端,客户端可以放到 cookie 或 localStorage 等存储中,每次请求时带上 token,服务端收到token通过验证后即可确认用户身份。

2. 什么是JWT?

JSON Web Token(JWT)是一个开放的行业标准(RFC 7519),它定义了一种简洁的、自包含的协议格式,用于在通信双方传递json对象,传递的信息经过数字签名可以被验证和信任。

3. JWT令牌结构  

JWT令牌由Header、Payload、Signature三部分组成,每部分中间使用点(.)分隔,比如:xxxxx.yyyyy.zzzzz

Header

头部包括令牌的类型(即JWT)及使用的哈希算法(如HMAC、SHA256或RSA)。

// header 内容

{
    "alg": "HS256",
    "typ": "JWT"
}

// 将上边的内容使用Base64Url编码,得到一个字符串就是JWT令牌的第一部分。

base64UrlEncode(header)

Payload

第二部分是负载,内容也是一个json对象,它是存放有效信息的地方,它可以存放jwt提供的现成字段,比 如:iss(签发者),exp(过期时间戳), sub(面向的用户)等,也可自定义字段。 此部分不建议存放敏感信息,因为此部分可以解码还原原始内容。

// payload 内容

{
    "sub": "1234567890",
    "name": "456",
    "admin": true
}

// 最后将第二部分负载使用Base64Url编码,得到一个字符串就是JWT令牌的第二部分。

base64UrlEncode(payload)

Signature

第三部分是签名,此部分用于防止jwt内容被篡改。 这个部分使用base64url将前两部分进行编码,编码后使用点(.)连接组成字符串,最后使用header中声明 签名算法进行签名。

// signature 内容

HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)

// 签名所使用的密钥

secret


Spring

Mybatis

JPA

MySQL

Redis

MongoDB

Elasticsearch

MQ

Linux

Maven

maven模式怎么切换环境

24种设计模式

业务问题及解决方案

1. 循环依赖

解决方案:懒加载

2. 事务抛异常,不回滚

原因解析:没有捕捉到相应异常

解决方案:定义相应异常类

3. 前后端传输long精度丢失

解决方案:消息转换器

4. 定是任务在分布式部署会重负执行

解决方案:加分布式锁

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值