Python 为使用Flask发送的电子邮件创建安全的取消订阅链接
我想生成一个退订链接,用户可以在收到电子邮件时单击该链接以退订该地址。我不想只在链接中包含电子邮件,因为用户可以编辑链接以取消订阅其他人。我看到的大多数电子邮件都会生成某种令牌,网站知道如何将令牌与用户匹配。如何使用Flask生成这样的令牌Python 为使用Flask发送的电子邮件创建安全的取消订阅链接,python,email,flask,Python,Email,Flask,我想生成一个退订链接,用户可以在收到电子邮件时单击该链接以退订该地址。我不想只在链接中包含电子邮件,因为用户可以编辑链接以取消订阅其他人。我看到的大多数电子邮件都会生成某种令牌,网站知道如何将令牌与用户匹配。如何使用Flask生成这样的令牌 for email in email_lst: body = 'unsubscribe link with token' msg.attach(MIMEText(body, 'html')) more code to se
for email in email_lst:
body = 'unsubscribe link with token'
msg.attach(MIMEText(body, 'html'))
more code to send email
Flask包括用于通过对序列化数据进行安全签名来生成令牌的库 对于每封电子邮件,为要取消订阅的电子邮件生成一个令牌,并创建一个
unsubscribe
路由,该路由接受并解码该令牌以确定要取消订阅的人
from itsdangerous import URLSafeSerializer, BadData
@app.route('/unsubscribe/<token>')
def unsubscribe(token):
s = URLSafeSerializer(app.secret_key, salt='unsubscribe')
try:
email = s.loads(token)
except BadData:
# show an error
...
# unsubscribe
...
def send_email():
s = URLSafeSerializer(app.secret_key, salt='unsubscribe')
token = s.dumps(user.email)
url = url_for('unsubscribe', token=token)
# add the url to your message
...
从其危险的导入URLSafeSerializer,BadData
@app.route(“/unsubscribe/”)
def取消订阅(令牌):
s=URLSafeSerializer(app.secret\u key,salt='unsubscribe')
尝试:
email=s.loads(令牌)
除不良数据外:
#显示错误
...
#退订
...
def send_email():
s=URLSafeSerializer(app.secret\u key,salt='unsubscribe')
令牌=s.dumps(user.email)
url=url\u用于('unsubscribe',token=token)
#将url添加到您的邮件中
...
由于令牌已签名,用户可以看到数据,但在不使令牌无效的情况下无法更改数据