sublime 给JWT续期

可以 在sublime里面使用python写一个插件 ,根据原有token自动 续期,根据不同的项目需要 做适当的修改

import sublime
import sublime_plugin  
import platform

import hashlib
import json
import base64
import hmac
import time 



# 获取选中或当前页面的文本数据
def getSel(view):
	sel = view.sel()
	reg = sel[0]
	sels = view.substr(reg)
	# 处理选中的数据时
	lineBreak = ""
	if sels == "":
		reg = sublime.Region(0, view.size())
		sels = view.substr (reg) 
	return reg,sels



# 根据现有token对token进行续命
class JwtHelperCommand(sublime_plugin.TextCommand):
	def run(self, edit): 

		# 过期时间 ,这里设置为2055年
		time_stamp = 2684719263
		# 密钥
		accer = "这个是密钥"

		# 根据老的token 将token续命
		reg,encoded_token = getSel(self.view)




		components = [part for part in encoded_token.rsplit(".", -1) if part]

        # 第一部分为头数据,第二为用户数据,第三为签名信息
		# json_head = base64_url_decode(components.pop(0)) 
		payload = base64_url_decode(components.pop(1))

		payload = json.loads(payload)   

		user_name = payload.get("name")
		# 设置过期时间
		payload["exp"] = time_stamp  

 		
		# 头数据 
		header = {'type': 'jwt', 'alg': 'HS256'}
		json_header = json.dumps(
		    header,
		    separators=(',', ':')
		).encode('utf-8')
		
		# 用户数据
		payload = json.dumps(
		    payload,
		    separators=(',', ':')
		).encode('utf-8')



		segments = []
		segments.append(base64url_encode(json_header)) 
		segments.append(base64url_encode(payload))


		# 以utf-8转为字符串,再以utf-8,再转一次
		# print(str(payload,"utf-8").encode('utf-8').decode('unicode_escape'))

		signing_input = b'.'.join(segments)
		# 根据密钥生成签名信息
		signature = hmac.new(accer.encode('utf-8'), signing_input, hashlib.sha256).digest()
		segments.append(base64url_encode(signature))
		

        
		# 将字符串转为日期
		date_str = time.strftime("%Y-%m-%d", time.localtime(time_stamp)) 
 
 


		# 将字节串转为字符串
		new_token=str(b'.'.join(segments),'utf-8') 
		
        # 打印数据到sublime里面
		self.view.replace(edit,reg,"==============>>>\n老token:   "+encoded_token+"\n\n过期时间:" +date_str+"     姓名:"+ user_name +"\n"+new_token+"\n")

你可能感兴趣的:(python,开发语言,sublime,text)