2017-05-30 35 views
1

私はDjango 1.10でカスタム認証バックエンドを持っています。私がログインすると、TypeError: <class 'CustomAuthBackend'> is not JSON serializableが得られます。私はSESSION_SERIALIZER='django.contrib.sessions.serializers.PickleSerializer'settings.pyに入れることでプロセス全体を動作させることができますが、多くの古い質問で指摘されているように、PickleSerializerは安全ではなく、もっと良い方法が必要です。Django:カスタム認証バックエンドを正しくシリアライズ

認証バックエンド用のシリアライザを作成するにはどうすればよいですか? https://github.com/caffeinehit/django-oauth2-provider/pull/56/filesのコードを使用しました(serialize()deserialize()を認証バックエンドクラスに追加し、別の機能としてserialize_instance()deserialize_instanceを使用しました)。私はこのアプローチを働かせることはできません、どんなアドバイスですか?

答えて

0

私が持っていた上記の提案はすべて不必要でした(私が見つけた解決策ははるかに単純だったので、あまりにも複雑でした)。

return userの直前で、user.backend=CustomAuthBackendという行をバックエンドのauthenticateメソッドに追加するだけで済みました。すべての私の問題を解決しました。

0

カスタム認証を行っていて、うまく動作していましたが、Jsonとして応答を送信しようとすると、CustomAuthenticationがJSONのシリアル化ではないというエラーが表示されていました。

だから私は

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

注意私のsettings.pyに追加:私はクラスベースのビューではDjango 1.10を使用しています

+0

この投稿はこの質問に回答していないようです。ここのすべての投稿は、この質問に答えるための明示的な試みであると予想されます。あなたが批判を持っているか、質問または別の回答の明確化が必要な場合は、そのすぐ下に(このような)[コメントを投稿する](// stackoverflow.com/help/privileges/comment)することができます。この回答を削除して、コメントまたは新しい質問を作成してください。参照:[質問をする、回答を得る、混乱を招かない](// stackoverflow.com/tour) – FrankerZ

+0

新しい質問がある場合は、[Ask Question](https://stackoverflow.com/questions/)をクリックして質問してください。質問)ボタンをクリックします。コンテキストを提供する場合は、この質問へのリンクを含めてください。 - [レビューから](/レビュー/低品質の投稿/ 18915487) – npf

+0

回答を回答に戻してください。 – jahmed31

関連する問題