[解決済み] Django Rest フレームワークのトークン認証
質問
私は Django Rest Framework Guides を読み、すべてのチュートリアルをやりました。すべてが理にかなっていて、あるべきように動作しているように見えました。私は基本認証とセッション認証が説明どおりに動作するようになりました。
django rest framework - api guide
しかし、私はドキュメントのトークン認証の部分で苦労しています。少し欠けていたり、チュートリアルほど深く掘り下げていなかったりします。
django-rest-framework - トークン認証
ユーザー用のトークンを作成する必要があると書いてありますが、models.pyのどこに書いてあるのでしょうか?
どなたか、初心者のために、ドキュメントのトークン認証の部分をもう少しうまく説明していただけませんか?
どのように解決するのですか?
いいえ、models.pyにはありません。モデル側では、適切なアプリをインクルードすればよいのです(
rest_framework.authtoken
)を
INSTALLED_APPS
. これによって、Userに対して外部キーとなるTokenモデルが提供されます。
あなたがしなければならないことは、いつ、どのようにこれらのトークンオブジェクトを作成すべきかを決めることです。あなたのアプリでは、すべてのユーザーが自動的にトークンを取得するのでしょうか?それとも、特定の承認されたユーザーだけが取得するのでしょうか?それとも、特定のユーザーが要求したときだけですか?
すべてのユーザーが常にトークンを持つ必要がある場合、リンク先のページに、トークンを自動的に作成するためのシグナルを設定する方法を示すコードの断片が記載されています。
@receiver(post_save, sender=User)
def create_auth_token(sender, instance=None, created=False, **kwargs):
if created:
Token.objects.create(user=instance)
は この を models.py ファイルに書くと、Django のスレッドが起動したときに登録されます)
もしトークンが特定の時間にだけ作成されるべきなら、ビューコードの中で、適切な時間にトークンを作成し保存する必要があります。
# View Pseudocode
from rest_framework.authtoken.models import Token
def token_request(request):
if user_requested_token() and token_request_is_warranted():
new_token = Token.objects.create(user=request.user)
トークンを作成(保存)すると、認証に使用できるようになります。
関連
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み] RESTful API のトークン認証:トークンは定期的に変更する必要がありますか?
-
[解決済み] バブルソートの宿題
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] Pandasを使って、既存のExcelファイルに新しいシートを保存する方法は?
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] 新しいpip backtrackingの実行時問題の解決
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] Pandasのデータフレーム内の文字列を'date'データ型に変換するにはどうしたらいいですか?
-
[解決済み] Pythonで、ウェブサイトが404か200かを確認するためにurllibをどのように使用しますか?
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?