Flask的超级简单JSON Web令牌
flask-easyjwt的Python项目详细描述
易拉罐
Flask EasyJWT为创建和验证提供了一个简单的界面 JSON Web Tokens (JWTs)在Python中。它允许您定义 然后使用这些声明创建和接受令牌,而不必检查是否提供了所有必需的数据 或者是你想要的那个。在
Flask EasyJWT是一个简单的包装器,可以方便地在EasyJWT周围使用 Flask应用程序。它通过Flask的应用程序配置提供配置选项 对于在web应用程序中创建的所有令牌的公共设置。有关如何使用 EasyJWT,见{a10}。在
fromflask_easyjwtimportFlaskEasyJWTfromflaskimportFlask# Define the claims of your token.classMySuperSimpleJWT(FlaskEasyJWT):def__init__(self,key):super().__init__(key)# Define a claim `name`.self.name=None# Define the default configuration options for FlaskEasyJWT# in the configuration of your Flask app.app=Flask(__name__)app.config.from_mapping(# The default key for encoding and decoding tokens.EASYJWT_KEY='Super secret key',# Tokens will be valid for 15 minutes after creation by default.EASYJWT_TOKEN_VALIDITY=15*60)@app.route('/token/<name>')defget_token(name):""" This view returns a token with the given name as its value. """token_object=MySuperSimpleJWT()token_object.name=namereturntoken_object.create()@app.route('/verify/<token>')defverify_token(token):""" This view verifies the given token and returns the contained name. """verified_token_object=MySuperSimpleJWT.verify(token)returnverified_token_object.name
特点
- 将EasyJWT集成到Flask中,以方便配置的默认选项 创建和验证jwt。在
- 将令牌的声明定义为一个类,然后使用该类轻松创建和验证多个令牌。在
- 不用担心字典键中的打字错误:将声明集定义为一个类,IDE就可以找到它们 你的打字错误。在
- 多个代币可能有相同的声明,但意图不同。Flask EasyJWT会帮你处理这个的:你 可以定义一个用于帐户验证的令牌和一个用于帐户删除的令牌,两者都以帐户ID作为声明,并且 不需要担心意外删除新创建的帐户而不是验证它,只是因为 有人把代币弄混了。在
- 支持所有注册的JWT声明:
aud
,exp
,iat
,iss
,jti
,nbf
,和{}。在
有关功能的完整列表,请参见the features of EasyJWT。在
系统要求和安装
Flask EasyJWT需要python3.6或更新版本。在
烧瓶EasyJWT可用on PyPI。你可以用你的最爱安装它 包管理器。在
- 在
皮普:
^{pr2}$ 在 - 在
管道:
pipenv install flask_easyjwt
在
使用
烧瓶EasyJWT正好用作EasyJWT。因此,本节仅描述
烧瓶的特性及基本用途。有关如何使用EasyJWT的详细说明(例如,
可选声明、已注册的声明(如aud
、iat
)和sub
,或验证第三方令牌),请参阅
its documentation。在
应用程序设置
不需要使用Flask应用程序初始化Flask EasyJWT。你所要做的一切(尽管这是, 严格地说,不是必需的),是为配置中的所有令牌指定一些默认设置 你的烧瓶应用。这些设置是:
Configuration Key | Description |
---|---|
^{ | The key that will be used for encoding and decoding all tokens. If ^{ |
^{ | The validity of each token after its creation. This value can be given as a string (that is parsable to an integer), an integer, or a ^{ |
您可以将这些配置值指定为烧瓶应用程序中的任何其他配置值,例如, 在代码中使用映射:
fromdatetimeimporttimedeltafromflaskimportFlaskapp=Flask(__name__)app.config.update(EASYJWT_KEY='Super secret key',EASYJWT_TOKEN_VALIDITY=timedelta(minutes=7))
在本例中,所有令牌(默认情况下)将使用(不太安全)字符串Super secret key
进行编码,并且
在它们被创建后的七分钟内有效(即,在对令牌调用create()
方法之后)
对象)。在
当然,指定配置值的任何其他方法也可以工作(请参见 Flask's documentation)。在
令牌规范和用法
标记的指定和使用与EasyJWT完全相同:
fromflask_easyjwtimportFlaskEasyJWT# Define the claims of your token.classMySuperSimpleJWT(FlaskEasyJWT):def__init__(self,key):super().__init__(key)# Define a claim `name`.self.name=None# Assuming we are within a Flask app context. # Create a token with some values.token_object=MySuperSimpleJWT()token_object.name='Zaphod Beeblebrox'token=token_object.create()# Verify the created token.verified_token_object=MySuperSimpleJWT.verify(token)assertverified_token_object.name=='Zaphod Beeblebrox'
唯一的区别是不必将用于编码或解码令牌的密钥传递给构造函数和
verify()
方法(如果不想使用在
应用程序配置)。在
另外,如果设置了配置值EASYJWT_TOKEN_VALIDITY
,则令牌将
在使用create()
创建此配置值后,对该配置值中指定的数量有效。如果这个
配置值未设置令牌不会过期。如果在令牌对象上显式设置过期日期
此值将始终优先(如果不是None
):
importdatetimefromflask_easyjwtimportFlaskEasyJWTfromflaskimportFlask# Define the claims of your token.classMySuperSimpleJWT(FlaskEasyJWT):def__init__(self,key):super().__init__(key)# Define a claim `name`.self.name=None# Define the default configuration options for FlaskEasyJWT# in the configuration of your Flask app.app=Flask(__name__)app.config.from_mapping(EASYJWT_KEY='Super secret key',EASYJWT_TOKEN_VALIDITY=datetime.timedelta(minutes=7))# Assuming we are within a Flask app context.token_object=MySuperSimpleJWT()token_object.name='Zaphod Beeblebrox'# This token will expire in 15 minutes, even though the default token validity is set to 7 minutes.token_object.expiration_date=datetime.datetime.utcnow()+datetime.timedelta(minutes=15)
初始化令牌对象以及创建和验证令牌必须在 Flask application context如果你想的话使用配置 来自应用程序配置的值。在
致谢
flaskeasyjwt只是JoséPadilla的一个易于使用的抽象层 PyJWT library执行创建和验证令牌的实际工作 根据JWT规范。没有他的工作,烧瓶就不可能了。在
许可证
烧瓶EasyJWT是由Bastian Meyer开发的 <;bastian@bastianmeyer.eu>;并根据 MIT License。有关详细信息,请参阅随附的LICENSE文件。在
- 项目
标签: