我使用Flask和itsharging来实现基于令牌的登录。它工作正常,但当用户使用logout_user()
call注销时,令牌仍然有效,从而导致不一致。所以我试着让代币过期,但找不到合适的方式。我想到的是:
def generate_auth_token(self, expiration):
s = Serializer(current_app.config['SECRET_KEY'],
expires_in=expiration)
return s.dumps({'id': self.id}).decode('ascii')
@staticmethod
def verify_auth_token(token):
import flask_login
u = flask_login._get_user()
if not u or isinstance(u, flask_login.AnonymousUserMixin):
return None
s = Serializer(current_app.config['SECRET_KEY'])
try:
data = s.loads(token)
except:
return None
return User.query.get(data['id'])
但我不喜欢这个解决方案。有人能提出更好的办法吗?在
最终,基于令牌的身份验证不允许简单的特定失效。(通用失效很容易-只需更改用于签名会话的
SECRET_KEY
每个会话都会自动失效)。有几种方法可以使特定的失效生效:相关问题 更多 >
编程相关推荐