vuejwt获取时间

vuejwt获取时间,第1张

您问的是vuejwt如何获取时间吧。

首先先创建一个变量用来存储开始时间和结束时间。timeParams:{undefinedbeginDate:'',//开始时间例如。2020-09-1614:25:23endDate:''//结束时间例如。2020-10-1614:25:23。

客户端

auth_header = JWT.encode({ user_id: 123, iat: Time.now.to_i, # 指定token发布时间 exp: Time.now.to_i + 2 # 指定token过期时间为2秒后,2秒时间足够一次HTTP请求,同时在一定程度确保上一次token过期,减少replay attack的概率;}, "<my shared secret>")

RestClient.get("http://api.example.com/", authorization: auth_header)

服务端

class ApiController <ActionController::Base

attr_reader :current_user

before_action :set_current_user_from_jwt_token

def set_current_user_from_jwt_token

# Step 1:解码JWT,并获取User ID,这个时候不对Token签名进行检查

# the signature. Note JWT tokens are *not* encrypted, but signed.

payload = JWT.decode(request.authorization, nil, false)# Step 2: 检查该用户是否存在于数据库

@current_user = User.find(payload['user_id'])

# Step 3: 检查Token签名是否正确.

JWT.decode(request.authorization, current_user.api_secret)

# Step 4: 检查 "iat" 和"exp" 以确保这个Token是在2秒内创建的.

now = Time.now.to_iif payload['iat'] >now || payload['exp'] <now # 如果过期则返回401

end

rescue JWT::DecodeError

# 返回 401

endend

原文地址: https://mp.weixin.qq.com/s/Jo3PZoa7nL99c8UCxPiTTA

以前一直使用的是jjwt这个JWT库,虽然小巧够用, 但对JWT的一些细节封装的不是很好。最近发现了一个更好用的JWT库nimbus-jose-jwt,简单易用,API非常易于理解,对称加密和非对称加密算法都支持,推荐给大家!

简介

nimbus-jose-jwt是最受欢迎的JWT开源库,基于Apache 2.0开源协议,支持所有标准的签名(JWS)和加密(JWE)算法。

JWT概念关系

这里我们需要了解下JWT、JWS、JWE三者之间的关系,其实JWT(JSON Web Token)指的是一种规范,这种规范允许我们使用JWT在两个组织之间传递安全可靠的信息。而JWS(JSON Web Signature)和JWE(JSON Web Encryption)是JWT规范的两种不同实现,我们平时最常使用的实现就是JWS。

使用

接下来我们将介绍下nimbus-jose-jwt库的使用,主要使用对称加密(HMAC)和非对称加密(RSA)两种算法来生成和解析JWT令牌。

对称加密(HMAC)

对称加密指的是使用相同的秘钥来进行加密和解密,如果你的秘钥不想暴露给解密方,考虑使用非对称加密。

要使用nimbus-jose-jwt库,首先在pom.xml添加相关依赖;

创建JwtTokenServiceImpl作为JWT处理的业务类,添加根据HMAC算法生成和解析JWT令牌的方法,可以发现nimbus-jose-jwt库 *** 作JWT的API非常易于理解;

创建PayloadDto实体类,用于封装JWT中存储的信息;

在JwtTokenServiceImpl类中添加获取默认的PayloadDto的方法,JWT过期时间设置为60s;

创建JwtTokenController类,添加根据HMAC算法生成和解析JWT令牌的接口,由于HMAC算法需要长度至少为32个字节的秘钥,所以我们使用MD5加密下;

/**

keytool -genkey -alias jwt -keyalg RSA -keystore jwt.jks

<dependency>

<groupId>org.springframework.security</groupId>

<artifactId>spring-security-rsa</artifactId>

<version>1.0.7.RELEASE</version>

</dependency>

/**

/**

/**

/**


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11206599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存