【问题标题】:Make it so url can only be accessed through redirect使其只能通过重定向访问 url
【发布时间】:2021-05-21 11:48:06
【问题描述】:

我正在将我的用户从 paypal 付款重定向到 register.html,以便您只有在支付订阅费用后才能注册。

如何才能使此重定向成为访问页面的唯一方法,而不是简单地将 mysite.com/register 放入浏览器?

我有需要登录的页面,但显然这是在用户注册之前,所以不能这样做。

【问题讨论】:

    标签: django redirect django-templates django-urls


    【解决方案1】:

    您可以在您的网址中添加付款 ID,例如: mysite.com/register/ 然后检查支付ID是否被确认,如果完成则显示注册表或如果支付错误则重定向

    【讨论】:

      【解决方案2】:

      对于 OP 中发布的要求,您可能有兴趣使用 HttpRequest.META 中的 HTTP_REFERER 来告诉您用户从哪里重定向。

      这是一个关于如何在 django 中实现它的示例视图

      def your_view(request):
          print(request.META.get('HTTP_REFERER'))
          if request.META.get('HTTP_REFERER') == 'whatever url of paypal you want to allow':
              some_context = {}
              return render(request, 'yourhtml.html', some_context)
          return redirect('/') # it can be redirected to anywhere if user is not intended audience
      

      因此它只会向来自您在 if 条件中设置的 url 的用户显示此视图

      注意:我不会说它是安全的,但它可以解决问题

      为了确保安全,我建议您设置一个短暂的临时令牌,例如 jwt 或其他用于用户验证的东西(如果可能的话)。我对paypal不太了解,所以不会多说。

      【讨论】:

      • 因此,使用 Paypal 时,每笔交易都会在 URL 上添加一个唯一的结帐令牌。我怎样才能使引用者接受来自 sandbox.paypal.com 的重定向的所有内容?
      • 据我所知,当引用者不是您的域但可能在网站内部时,它认为没有任何方法可以获得完整的 url。在这里,我认为您需要配置自动重定向 url 以重定向到 paypal 中的https://www.yourdomain.com/register?checkout-token=yourtoken
      • 我会在一段时间内尝试更新完整的代码,可能需要查看 paypal 文档。到那时这可能会有所帮助developer.paypal.com/docs/archive/checkout/how-to/…
      • 我已经设置好了,它在谷歌浏览器而不是 Safari 上都可以运行,这有什么原因吗?
      • 这可能会有所帮助stackoverflow.com/q/20716439/10140011,我无法确认,因为我不使用 safari。
      猜你喜欢
      • 2012-12-14
      • 2017-02-10
      • 2021-09-12
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      • 2020-11-29
      • 2016-10-23
      相关资源
      最近更新 更多