django rest framework jwt权限

rest-jwt-permission的Python项目详细描述


[![构建状态](https://travis-ci.org/chessbr/rest-jwt-permission.svg?branch=master)(https://travis ci.org/chessbr/rest jwt权限)
[![覆盖状态](https://coveralls.io/repos/github/chessbr/rest-jwt-permission/badge.svg?branch=master)](https://coveralls.io/github/chessbr/rest-jwt-permission?分支=主)
[![许可证](https://img.shields.io/badge/license mit blue.svg)](许可证)



##使用

下面是一个示例:

``python
rest-jwt-permission={
"作用域提供程序":[
"rest-jwt-permission.providers.apiendpointscopeprovider",
"rest-jwt-permission.providers.adminscopeprovider"

"从作用域处理程序获取有效载荷":(
"rest-jwt-u权限.处理程序.从作用域获取有效载荷"
)、
"从作用域处理程序获取有效载荷":(
"rest-jwt-u权限.处理程序.从作用域获取有效载荷"
)、
"从请求处理程序获取有效载荷":(
"rest_jwt_permission.handlers.get_jwt_payload_from_request"

}
````

>现在您可以通过"permission_classes"属性在API视图中使用"jwtapipmission"类,甚至可以将其设置为[设置](http://www.django-rest-framework.org/api-guide/permissions/设置权限策略)


通过github[个人访问令牌](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/)和[auth0 api keys blog post](https://auth0.com/blog/using json web tokens as api keys/),这个包提供了一个django rest framework permission对象来检查jwt有效负载的权限。


这使您的api能够检查权限,避免额外的数据库命中。


对于每个端点+操作。然后,在authentication之后,您的api应该注入用户可以访问的权限标识符。jwt负载应该如下所示:

`` json
{
"作用域":[
"myviewset:get"
"function\u endpoint:get",
"basicview:get",
"simpleviewsetpermission:custom\u action:put",
"modelviewsetpermission:retrieve:get",
"modelviewsetpermission:destroy:delete",
"modelviewsetpermission:some_detail\u metod:patch",
]
}
````

"jwtapiplemission"权限类将为请求的视图生成唯一ID,并检查JWT有效负载是否包含该ID。如果包含,则用户具有访问权限。

:警告:此包不会自动将作用域有效负载注入JWT,尽管我们有助手(rest-jwt-u permission.handlers.get-u payload-from-u scopes),但您可以使用它来完成这项工作。我们强烈建议您使用[rest framework jwt auth]包(https://github.com/getblimp/django-rest-framework-jwt),因为它提供了制作此eaiser所需的所有功能。虽然有效负载处理程序是"jwt_payload_handler"设置,但您可以更改它。




您还可以创建某种管理页来选择用户和/或组(如github令牌作用域)的权限,并使用它将令牌注入jwt:

![github令牌页面](https://help.github.com/assets/images/help/settings/token嫘scopes.gif)



\每个作用域都应该有一个唯一的标识符(请参见[`scope`](rest_jwt_permission/scopes/base.py)基类)。您可以扩展基"scope"类并添加额外的属性和方法。



\providers

`providers`是返回现有作用域列表的对象。我们目前有两个内置提供程序:

*`apiendpointscopeprovider`:返回django rest framework注册视图的所有作用域。
*`adminscopeprovider`:返回与管理相关的作用域。目前,只返回"超级用户"作用域。

添加或删除功能。

查看可自定义的设置列表,所有这些都在"rest-jwt-u permission"设置键中:


**`scope-providers`**:用于提取现有作用域的提供程序列表。
默认为:
```
"scope-providers":[
"rest-jwt-permission.providers.apiendpointscopeprovider",
"rest_jwt_permission.providers.adminscopeprovider"
]
````

**`get_payload_from_scopes_handler`**:handler函数获取要注入jwt的作用域的有效负载。默认为:
```
"从作用域处理程序获取作用域":"rest_jwt_permission.handlers.get_payload_from_scopes"
````

**`get_scopes_from_payload_handler`**:处理程序函数从JWT有效负载获取作用域。默认为:
```
"从有效载荷处理程序获取有效载荷":"rest\u jwt\u permission.handlers.get\u scopes\u from\u payload"
```

**"从请求处理程序获取有效载荷"`**:handler函数从请求获取jwt有效载荷。默认为:
```
"从请求处理程序获取有效负载":"rest\u jwt\u permission.handlers.get\u jwt\u payload\u from\u request"
````

**`jwt\u payload\u scopes`**:将包含作用域的有效负载密钥。默认为:
```
"jwt_payload_scopes_key":"scopes"
````


\br/>##运行测试

从"dev requirements.txt"安装依赖项并运行"py.tets--cov":

`````
pip install dev-requirements.txt&;py.tets--cov
```

兼容性

*django>;=2.0
*django rest framework>;=3.7

许可证

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
序列化反序列化java。awt。颜色>java。木卫一。InvalidClassException   java禁用多个日期范围jDateChooser   java为什么我的特例apper会被扔进泽西/灰熊?   JavaIntelliJ比较两个覆盖率数据   java什么是servletsdefault。你怎么办?   单击几下libgdx后java按钮没有响应   使用java将字符串转换为JSONArray   文件系统在java中刷新fileSystemViewer   java如何在hibernate中避免脏检查   java奇怪的问题,带有分号和“无法解决…”   java将值从子面板传递到父面板   HTML JTextPane CSS的Java FontSizeAction   java文件代码神秘地变成了一堆(0000)