1

考虑来自此 url 的请求,其中接收者是用符号/messages/compose/(?P<recipients>[\+\.\w]+)/分隔的用户名。+成功后(成功发送给收件人的消息)我正在做:

#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?'

注意:如果您想拥有更多安全网址,您应该对该字符串进行一些翻译(否则其他知道基本(编码)编码的用户将轻松解码您的值。

于 2012-05-28T22:28:26.583 回答
0

如果您使用重定向,则不会。Django 有一个“无共享”架构,这意味着在一个请求和下一个请求之间,服务器上没有用户状态持续存在。出于这个原因,Django 不能(自动)“记住”重定向之前的收件人是什么,因此它可以在下一个 HTTP 请求中访问它们。

你想要隐藏它们的原因是什么?是否有您不能发回给客户的敏感信息,或者类似的东西?避免这种情况的一种选择是简单地重复客户端发送的信息(即原始recipients参数)并让success视图重做compose对它们执行的操作。

于 2012-05-28T22:28:35.740 回答