flask使用token进行验证

Posted in 2016-12-13 3:32 | Category: Python | Tags: flask python token

为什么需要用token验证

原因呢是因为写博客时已经在本地写好了,但是要发表到网站上还需要这么几步:

  • [X] 打开浏览器
  • [X] 打开我的网站
  • [X] 进入登陆页
  • [X] 登陆
  • [X] 进入后台页
  • [X] 进入文章发表页
  • [X] 复制粘贴
  • [X] 发表

所以使用token验证成为必然

如何使用token?

生成token

使用itsdangerous对token进行加密

class User(model):
    ......

    @property
    def token(self):
        config = current_app.config
        secret_key = config.setdefault('SECRET_KEY')
        salt = config.setdefault('SECURITY_PASSWORD_SALT')
        serializer = URLSafeTimedSerializer(secret_key)
        # column = self.(需要加密的字段)
        token = serializer.dumps(column, salt=salt)
        return token

请保管好SECRET_KEYSECURITY_PASSWORD_SALT,不要泄露

验证token

class User(Model):
    ......

    @staticmethod
    def check_token(token, max_age=86400):
        config = current_app.config
        secret_key = config.setdefault('SECRET_KEY')
        salt = config.setdefault('SECURITY_PASSWORD_SALT')
        serializer = URLSafeTimedSerializer(secret_key)
        try:
            column = serializer.loads(token, salt=salt, max_age=max_age)
        except BadSignature:
            return False
        except SignatureExpired:
            return False
  • max-age 最大过期时间 …