Django:正确序列化自定义身份验证后端

时间:2017-05-30 16:20:06

标签: python json django authentication serialization

我在Django 1.10中有一个自定义身份验证后端。如果我登录,我会得到TypeError: <class 'CustomAuthBackend'> is not JSON serializable。我可以通过将SESSION_SERIALIZER='django.contrib.sessions.serializers.PickleSerializer'放入settings.py来完成整个过程,但正如许多旧问题所指出的那样PickleSerializer是不安全的,我需要更好的方法。

如何为我的身份验证后端编写正确的序列化程序?我尝试使用https://github.com/caffeinehit/django-oauth2-provider/pull/56/files中的一些代码(将serialize()deserialize()添加到我的身份验证后端类,并将serialize_instance()deserialize_instance作为单独的函数)。我不能得到这种方法,任何建议吗?

2 个答案:

答案 0 :(得分:0)

我提出的所有上述建议都是不必要的(而且过于复杂,因为我发现的解决方案要简单得多)。

我只需要在user.backend=CustomAuthBackend之前的后端验证方法中添加行return user。解决了我所有的问题。

答案 1 :(得分:0)

我正在进行自定义身份验证并且运行正常,但是当尝试以Json发送响应时,它给我的错误CustomAuthentication不是JSON序列化。

所以我添加了我的settings.py

  

SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'

注意:我正在使用Django 1.10和基于类的视图