微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Stripe Webhook中的flask-login中无法跟踪当前用户

如何解决在Stripe Webhook中的flask-login中无法跟踪当前用户

我正在尝试跟踪当前客户并将Webhook详细信息链接用户的电子邮件ID。

models.py

from flask_login import UserMixin
from . import db

class User(UserMixin,db.Model):
    id = db.Column(db.Integer,primary_key=True) # primary keys are required by sqlAlchemy
    #admin=db.Column
    public_id=db.Column(db.String(50),unique=True)
    email = db.Column(db.String(100),unique=True)
    password = db.Column(db.String(100))
    name = db.Column(db.String(1000))

main.py

@main.route("/webhook",methods=["POST"])
def webhooks():
    payload = request.get_data(as_text=True)
    
    sig_header = request.headers.get("Stripe-Signature",None)
    
    

    try:
        event = stripe.Webhook.construct_event(
            payload,sig_header,stripe_keys["endpoint_secret"]
        )

    except ValueError as e:
        # Invalid payload
        print("Invalid payload")
        return "Invalid payload",400
    except stripe.error.SignatureVerificationError as e:
        return "Invalid signature",400

    if current_user.is_authenticated:
                 email=current_user.email
    else:
                  print("Not authenticated!")

它一直打印“未认证!”万一我将@login_required用于webhook端点,我会不断收到302错误

请告诉我我要去哪里哪里

解决方法

current_user.is_authenticated是无意义的,因为POST已签名(这是一条公共路线)。问题是payload是在触发Webhook之前发送给API的。将数组metadata添加到user_id中。然后,所得的Webhook也将具有metadata ...,而metadata具有user_id。在这种情况下,因为没有用户在场,因此没有其他方法可以知道任何user_id

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。