JWT token生成传递和解析的案例(kotlin)

JWT 做token的校验,非常的方便,具体作用可以google查一下,这里只记录怎么使用
1、引入jwt的依赖

    /**
     * java-jwt
     */
    implementation("com.auth0:java-jwt:3.18.1")

2、编写JWT的工具类

@Component
@Slf4j
class JwtUtil(val jwtProperties: JwtProperties){

	open fun validateToken(authToken: String?): Boolean {
		val algorithm: Algorithm = Algorithm.HMAC512(jwtProperties.secret)
		val verifier = JWT.require(algorithm).build()
		try {
			verifier.verify(authToken)
			return true
		} catch (e: JWTVerificationException) {
			log.warn("Invalid signature/claims :: {}", e.message)
		}
		return false
	}

	open fun extractUserFromJwt(token: String): Map<String?, Claim?>? {
		val token = if (token.startsWith("Bearer ")) token.substring(7) else token
		val verificationSucceeded =
			validateToken(token)
		if (!verificationSucceeded) {
			throw Exception("Token was unauthorized")
		}
		try {
			val jwt = JWT.decode(token)
			return jwt.claims
		} catch (e: JWTDecodeException) {
			log.error("Failed to decode token", e)
		}
		return null
	}
}
@Component
@ConfigurationProperties(prefix="jwt")
data class JwtProperties (
 var header: String?=null,
 var tokenHead: String?=null,
 var secret: String?=null,
 var expirationInMs: Long?=null
)
jwt:
  header: "Authorization"
  tokenHead: "Bearer "
  secret: XXXXXXXX
  expirationInMs: 22133

3、JWT的使用

open class AliPayController (
	val alipayTemplate: AlipayTemplate,
	val platformOrderService:IPlatformOrderService,
	val jwtUtil: JwtUtil
	){
open fun payOrder(@RequestBody aliPayVo: AliPayVo,@RequestHeader("Authorization") token: String): String? {
val platformOrder = PlatformOrder()
platformOrder.tenantId = jwtUtil.extractUserFromJwt(token)!!["tenantId"]!!.asLong()
platformOrder.fromUserId = jwtUtil.extractUserFromJwt(token)!!["userId"]!!.asLong()
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值