用加密字符串替换rest框架的integerfield pk或id查找。

django-rest-encrypted-lookup的Python项目详细描述


[![PYPI](https://img.shields.io/PYPI/dm/django rest encrypted lookup.svg);
[![构建状态](https://travis-ci.org/intersis/django-rest-encrypted-lookup.svg?branch=master)](https://travis ci.org/intersis/django rest encrypted lookup)


django rest encrypted lookup
==


drop-in-viewsets、serializer和fields,它们用加密的字符串查找替换integerfield pk或id查找。

在整个项目中使用单个密码,或为每个序列化程序、模型、用户和/或客户端提供唯一的密码。

10,
12,
]
}
```
"rqq5a2evfokyo7tz74loiu3bcq",
]
}
`````

>按用户密码选择用户,以便:
````
;用户A获取/api/polls/并接收:

{
"结果":[
"4xoh7gja2mtvz3i47ywy5h6ouu",
"12gc75ggggiwv6cs5zc4mpzeoe",
]
}


```



如果您喜欢超链接相关字段:
```
{
"id":"4xoh7gja2mtvz3i47ywy5h6ouu",
"问题":[
"https://example.com/api/questions/t6y4zo26vutj4xclh5hpy3sc5m/",
"https:"//例如,com/api/api/questions/hp7c75ggggggiw6cs5czc4mzc4mpzeoe/",
"https://www.com/api/api/questions/rqqqq5a2evfokyo7tz74loio3bcq/",
]

`` ` `


终点:

````````````
/api/polls/api/polls/5/
```````
````>```````
>````````````
/br/>/api/polls/4xoh是的i47ywy5h6ouu/
```


加密查找*不*适合用作防止用户猜测对象uri的安全措施。加密的
查找*适合用作混淆对象pks/id的方法。




r"已安装的应用程序":已安装的应用程序=(

"rest_framework_encrypted_lookup"、


````

和设置中的应用程序。py:

````
"encrypted_lookup={
"lookup_field"名称:'id',drf查找字段的字符串值名称,通常为'id'或'pk'
'密钥':'唯一密钥',选择字符串值用于加密查找字段的唯一密钥
},
````


怨恨。在响应合成期间,模型序列化程序生成加密的查找。端点
uri中呈现的加密查找在调度调用中解密,数据字段中呈现的加密查找由模型
反序列化程序解密。


加密由pycrypto aes库提供。

okup提供三个字段类:

from rest\u framework\u encrypted\u lookup。字段导入encrypted lookup field、encrypted lookuprelatedfield、encrypted lookuphyperlinkedrelatedfield

两个新的序列化程序类:

from rest\u framework\u encrypted\u lookup。序列化程序导入EncryptedLookupModelSerializer,加密edlookuphyperlinkedmodelserializer

和一个通用视图类:

#models.py

类轮询(models.model):




#views.py

从rest_framework导入viewsets


类pollviewset(加密的lookupgenericviewset,
viewsets.mixins.listmodelmixin,
viewsets.mixins.retrievemodelmixin,



queryset=poll.objects.all()
serializer\u class=pollserializer

lookup\u field='id'
````


okupGenericViewSet`.

encryptedLookupField`,`encryptedLookupRelatedField`字段由encryptedLookupModelSerializer隐式使用。如果需要,这些字段也可以显式使用。

类meta:
model=poll
``


在这种情况下,poll serializer将使用"encryptedhyperlinkedlookupprelatedfield"将相关字段序列化为超链接。

默认情况下,每个加密的查找序列化器类将使用相同的cypher。通过覆盖序列化程序的"get-cypher"方法,可以选择非默认的cypher。这里有一个"get-cypher"方法,它将为每个模型生成一个唯一的cypher:

```
来自rest-framework加密查找。utils从rest-framework加密查找导入idcipher
。settings导入加密查找设置

ncryptedlookupmodelserializer):

def get_cipher(self):
返回idcipher(secret=encrypted_lookup_settings['secret_key']+self.meta.model)
````

m rest_framework_encrypted_lookup.utils从rest_framework_encrypted_lookup导入idcipher
假设用户必须登录才能到达此终结点。


*django 1.6,1.7,1.8
*python 2.7,3.3,3.4



>测试的特定小版本见tox.ini。






>附加要求
=======




*django 1.6.1


===



*有帮助的例外。
*覆盖率。




=============





br/>参与
=====


欢迎打开请求或问题。github是此项目的规范位置。

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

推荐PyPI第三方库


热门话题
ByteArrayOutputStream的java解码属性   java S3 SDK在上载时更新单个对象,而不是创建新文件   java hibernate:无法从eclipse连接到DB   java如何在强制转换JComboBox之前检查其类型?   http从Java中的GETPOST请求方法捕获URI、资源名称,如开发人员工具中所示   java在Spring@Bean方法中返回接口的局限性   Java中的Web服务和客户端(使用Eclipse Apache Axis 2自底向上服务)某些代码会引发异常   java spring安全+rest不起作用   java将LinkedList添加到包含LinkedList的LinkedList并更改添加的LinkedList   java是否临时删除对象的属性?   java使用AnimatedGifEncoder类创建的gif图像的部分帧是不透明的   java如何高效地处理maven3时间戳快照?   java向集合对象添加另一项   java如何将动态参数传递给jquery函数   java使用libGdx桌面端口作为Android GLES20的仿真器