账号持久化
Closed this issue · 4 comments
anwenhu commented
在不保存用户密码的情况下可保持账号的登录状态
MasterYuan418 commented
智学网不知道支不支持token
过期后可续时长这个功能...
如果不支持,我觉得有一种变相的持久化,上一下伪代码:
file = "test.usr"
AESKey = "123456"
# uid: 用户名
# upwd: 密码
# uToken: 密钥(get_token())
# expireMinutes: 过期时间
def _write_user_prof(uid: str, upwd: str, uToken: str, expireMinutes: str = 30):
AES_write(file, uid + ";" + upwd + ";" + uToken + ";" + expireMinutes, AESKey) #AES加密用户存档文件
def _read_user_prof(uName: str): #读取用户存档文件,返回token
if exists(uName + ".usr") is False: #文件不存在
raise Exception()
else:
details = AES_read(file, AESKey).Split(';')
if _isExpired() is True: #密钥过期了
usr = login(details[0],details[1])
return get_token(usr)
else:
return details[2]
这样,虽然密码保存了,但是依然是安全的,只要AES密钥不泄露。
anwenhu commented
@MasterYuan418 研究了一下. 登录的时候会有tgt和st, 其中st会过期, 但tgt貌似不会, 如果st过期了可通过带tgt访问特定接口重新获取st.
MasterYuan418 commented
@anwenhu 那就可以在本地用userId
字段加密存储tgt
,过期时间和token
,第二次启动的时候只需要用userId
解密,然后判断是否过期,未过期就直接返回token
,过期就续期一下(当然,上述言论均是在嘴炮)
anwenhu commented
经测试, tgt 过期时间不到一天