我需要加密从模板传递到django中的id。 实际上,user_id必须在url中加密,因此没有人可以在url中传递id 这段代码。
<tr>
{% with user_id=item.user_id %}
#user_id have to be encrypted
<td><center><a href="{% url "accounts" user_id %}">{{ item.Company_name }}</a></center></td>
{% endwith %}
我一直在寻找一段时间,但我没有找到如何加密模板中的参数。
答案 0 :(得分:1)
好吧,如果encrypt
正是您的意思,我不会这样做。我的意思是,使用say md5
加密字符串将无法在服务器端为您解密字符串。为此,您应该使用encode
,例如使用base64
编码系统。这将用编码的字符串替换id,但有人savvy
可能会注意到这一点并解码您的网址中的字符串。
您在这里要完成的是通过默默无闻的安全性,这是不推荐的。您可以应用此技术,但您最好在代码中添加更多安全性,例如权限和类似的东西。
要对您的用户ID进行编码,您可以将此方法添加到Item
类:
class Item
...
def encoded_id(self):
import base64
return base64.b64encode(str(self.user_id))
def decode_id(self, id):
import base64
return base64.b64decode(id)
...
这样你就可以在你的观点中做到这一点:
<tr>
{% with user_id=item.encoded_id %}
#user_id have to be encrypted
<td><center><a href="{% url "accounts" user_id %}">{{ item.Company_name }}</a></center></td>
{% endwith %}
您将使用base64中编码的id
网址。
之前要注意我的警告。 你永远不应该只依赖于此,这是一种有效的做法,但要记住编码可以颠倒。
希望这有帮助!
答案 1 :(得分:1)
我认为保罗将加密与签名混为一谈。请查看Pycrypto以获取加密功能。