1

受信者が記号/messages/compose/(?P<recipients>[\+\.\w]+)/で区切られたユーザー名であるこのURLからのリクエストについて考えてみます。+成功した後(受信者へのメッセージが正常に送信されました)、私は次のことを行っています。

#success_url = 'message_send_success'
recipients = '+'.join([obj.username for obj in recipients]) #converting them back to original string
reverse(success_url, kwargs={'recipients': recipients})

これは、一致するURLです。

url(r'^/messages/success/(?P<recipients>[\+\.\w]+)$', 'site.views.message_send_success', name='message_send_success')

しかし、URL内のすべての受信者が表示されますが、URLに表示される受信者の文字列を非表示にして、リクエストでアクセスできる場所はありますか?

4

2 に答える 2

1

たぶんあなたはbase64ライブラリを使いたいでしょう:

>>> base64.b64encode("what is that?")
'd2hhdCBpcyB0aGF0Pw=='
>>> base64.b64decode("d2hhdCBpcyB0aGF0Pw==")
'what is that?'

注:より多くの安全URLが必要な場合は、その文字列に対していくつかの変換を行う必要があります(そうしないと、ベース(en)コーディングを知っている他のユーザーが値を簡単にデコードします。

于 2012-05-28T22:28:26.583 に答える
0

リダイレクトを使用している場合は違います。Djangoには「シェアードナッシング」アーキテクチャがあります。つまり、あるリクエストと次のリクエストの間、サーバー上でユーザーの状態が持続することはありません。このため、Djangoはリダイレクト前の受信者を(自動的に)「記憶」できないため、次のHTTPリクエストで受信者にアクセスできます。

それらを隠したい理由は何ですか?クライアントに返送できない機密情報などはありますか?これを回避するための1つのオプションは、クライアントが送信した情報(つまり、元のrecipientsパラメーター)を繰り返して、successビューcomposeにそれらに対して実行された操作をやり直すことです。

于 2012-05-28T22:28:35.740 に答える