首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

heroku DRF在本地主机上可以正确进行身份验证,但在auth0托管的angular应用程序上无法与heroku托管的DRF应用程序进行对话

基础概念

Heroku 是一个云平台即服务(PaaS),允许开发者快速部署和扩展应用程序。Django REST Framework (DRF) 是一个用于构建 Web API 的强大且灵活的工具包。Auth0 是一个身份验证即服务(IDaaS)提供商,提供用户身份验证和授权服务。

问题分析

当你在本地主机上可以正确进行身份验证,但在 Auth0 托管的 Angular 应用程序上无法与 Heroku 托管的 DRF 应用程序进行对话时,可能的原因包括:

  1. 跨域资源共享(CORS)问题:浏览器出于安全考虑,限制了从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。
  2. 认证令牌传递问题:在 Angular 应用程序和 DRF 应用程序之间传递认证令牌时可能出现了问题。
  3. 认证后端配置问题:DRF 的认证后端可能没有正确配置以处理来自 Auth0 的令牌。

解决方案

1. 配置 CORS

确保 Heroku 上的 DRF 应用程序允许来自 Auth0 托管的 Angular 应用程序的请求。你可以在 DRF 中配置 CORS 如下:

代码语言:txt
复制
# settings.py
INSTALLED_APPS = [
    ...
    'corsheaders',
    ...
]

MIDDLEWARE = [
    ...
    'corsheaders.middleware.CorsMiddleware',
    ...
]

CORS_ORIGIN_ALLOW_ALL = False
CORS_ORIGIN_WHITELIST = [
    'https://your-angular-app.auth0.com',  # 替换为你的 Auth0 域名
]

2. 配置认证令牌传递

确保 Angular 应用程序在向 DRF 应用程序发送请求时正确传递了认证令牌。你可以在 Angular 中使用 HttpClient 并设置请求头:

代码语言:txt
复制
import { HttpClient, HttpHeaders } from '@angular/common/http';

const httpOptions = {
  headers: new HttpHeaders({
    'Authorization': 'Bearer ' + yourAccessToken  // 替换为你的访问令牌
  })
};

this.http.get('https://your-drf-app.herokuapp.com/api/endpoint', httpOptions)
  .subscribe(data => {
    console.log(data);
  });

3. 配置 DRF 认证后端

确保 DRF 的认证后端能够正确处理来自 Auth0 的令牌。你可以使用 TokenAuthentication 或自定义认证后端:

代码语言:txt
复制
# settings.py
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        # 添加自定义认证后端
        'your_app.backends.Auth0Authentication',
    ],
}

自定义认证后端示例:

代码语言:txt
复制
# your_app/backends.py
from rest_framework import authentication
from rest_framework import exceptions

class Auth0Authentication(authentication.BaseAuthentication):
    def authenticate(self, request):
        auth_header = authentication.get_authorization_header(request).split()

        if not auth_header or auth_header[0].lower() != b'bearer':
            return None

        if len(auth_header) == 1:
            msg = 'Invalid token header. No credentials provided.'
            raise exceptions.AuthenticationFailed(msg)
        elif len(auth_header) > 2:
            msg = 'Invalid token header. Token string should not contain spaces.'
            raise exceptions.AuthenticationFailed(msg)

        try:
            token = auth_header[1].decode('utf-8')
        except UnicodeError:
            msg = 'Invalid token header. Token string should not contain invalid characters.'
            raise exceptions.AuthenticationFailed(msg)

        # 验证令牌逻辑
        user = self.validate_token(token)

        if not user:
            raise exceptions.AuthenticationFailed('Invalid token.')

        return (user, None)

    def validate_token(self, token):
        # 实现验证令牌的逻辑
        pass

参考链接

通过以上步骤,你应该能够解决在 Auth0 托管的 Angular 应用程序上无法与 Heroku 托管的 DRF 应用程序进行对话的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

我从10次停机中学到几个经验

第 11 集,Salesforce 发布了有争议事后分析:Salesforce 无法更新他们状态页面,因为他们将其托管基于 Heroku 服务上,并且由于 Heroku 就是他们所有的,还集成到了他们基础设施中...第 6 集,GitHub 43 秒网络分区:GitHub 数据库自动化一次为时 43 秒网络分区期间,对一个数据库进行了记录不完整跨国提升。...好选项:使用像 MySQL 这样无聊事物并自己处理分片。这会很麻烦,因为你必须在应用层做很多额外工作,但当它崩溃时你可能会知道它是如何运作。这在 10 年前可能是正确想法,但现在看来也不错。...第 5 集,Auth0 悄悄丢失了一些索引:不降低实时流量情况下, mongo 中重新同步副本是很难实现。  ...第 4 集,一个微妙正则表达式摧毁了 Cloudflare:Cloudflare 已经制定了政策和支持使用条款,允许他们服务出现故障时关闭全球 Web 应用程序防火墙。

77020

放弃“免费套餐”,Heroku遗产又少了一个

Heroku 是一种平台即服务 (PaaS),是 2007 年创建第一批云平台之一,可让开发者将 git 存储库推送到云端,然后神奇地获取在某处运行应用程序 URL。...今年 4 月,Heroku 还曾发生一起严重安全事故,社区反应激烈,当时一名攻击者获取了 Heroku 数据库(我们那个时代称为 core-db)访问权,并泄露了它内容,包括哈希密码和用于...用户可以直接从开发语言出发,选择对应技术栈,通过 heroku create 这样简单命令,将应用托管到云上。主流开发语言,均能在 Heroku 中找到对应选择。...Heroku 是云计算终极创意工厂——比如 “十二要素应用宣言(The Twelve-Factor App)” 、抗侵蚀和 DX,这些概念将会经得起时间检验,但是它们受益者中,很少有人会认识到它们...甚至 Heroku “内核”中,你也可以进行交换,因此你仍然可以使用 Heroku 来构建、编排和监控你应用,但是它们会在你自己专用单租户服务器上运行。

4.8K40
  • 关于“Python”核心知识点整理大全64

    我们还需确保任何人 都无法看到这些信息,也不能冒充项目托管网站来重定向请求。...1处,修改ALLOWED_HOSTS,只允许Heroku托管这个项目。...你需 要使用应用程序名称,可以Heroku提供名称(如afternoon-meadow-2775.herokuapp.com), 也可以是你选择名称。...当前,在这两种情况下,Django都返回通用错误页面,但我们可以编写外观“学习笔记”一 致404和500错误页面模板。这些模板必须放在根模板目录中。 1....本地查看错误页面 将项目推送到Heroku之前,如果你要在本地查看错误页面是什么样,首先需要在本地设 置中设置Debug=False,以禁止显示默认Django调试页面。

    9810

    工业场景全流程!机器学习开发并部署服务到云端 ⛵

    # 安装flaskpip install flask Heroku图片 Heroku是一个平台即服务(PaaS),它支持基于托管容器系统部署 Web 应用程序,具有集成数据服务和强大生态系统。...开发完成接收请求后可以进行预估程序)① Web 应用前端很多 Web 应用程序前端都是使用 HTML 构建,我们本篇内容中不会深入讲解前端相关内容。...我们命令行运行 python app.py:python app.py图片上图中大家可以最后一行看到本地测试 URL,我们把它粘贴到浏览器可以查看 Web 应用程序是否正常。...第三步: Heroku 上部署 ML 流水线和应用程序模型训练完成后,机器学习流水线已经准备好,且完成了本地测试,我们现在准备开始部署到 Heroku。...图片将所有文件上传到 GitHub 后,我们就可以开始 Heroku进行部署了。

    2.7K21

    工业场景全流程!机器学习开发并部署服务到云端

    # 安装flaskpip install flask复制代码 Heroku Heroku 是一个平台即服务(PaaS),它支持基于托管容器系统部署 Web 应用程序,具有集成数据服务和强大生态系统。...开发完成接收请求后可以进行预估程序)① Web 应用前端很多 Web 应用程序前端都是使用 HTML 构建,我们本篇内容中不会深入讲解前端相关内容。...我们命令行运行 python app.py:python app.py复制代码上图中大家可以最后一行看到本地测试 URL,我们把它粘贴到浏览器可以查看 Web 应用程序是否正常。...第三步: Heroku 上部署 ML 流水线和应用程序模型训练完成后,机器学习流水线已经准备好,且完成了本地测试,我们现在准备开始部署到 Heroku。...如下为操作步骤:① 注册并点击 『 创建新应用 heroku可以完成上述操作,如下图所示② 输入应用名称和地区③ 连接到托管代码 GitHub 存储库④ 部署分支⑤ 等待部署完成部署完成后,

    2.3K20

    关于“Python”核心知识点整理大全65

    Heroku可能还限制了你可免费托管项目数, 另外,你也不希望让自己账户中塞满大量练习项目。...Heroku网站(https://heroku.com/)登录后,你将被重定向到一个页面,其中列出了你托管 所有项目。单击要删除项目,你将看到另一个页面,其中显示了有关这个项目的信息。...注意 删除Heroku项目对本地项目没有任何影响。如果没有人使用你部署项目,就尽管 去练习部署过程好了,Heroku删除项目再重新部署完全合情合理。...20.3 小结 本章中,你学习了如何使用Bootstrap库和应用程序django-bootstrap3赋予应用程序简单而专 业外观。...最后,你将DEBUG设置为False, 以确保在线服务器上应用程序安全。 至此,开发完了项目“学习笔记”后,你可以自己动手开发项目了。请先让项目尽可能简单, 确定它能正确运行后,再添加复杂功能。

    11810

    SalesforcePaaS平台Heroku简介

    此前 Heroku 已经把 PostgreSQL 作为一种服务工具提供给开发人员,且已有几年历史,不过现在开发团队希望是,无论自己应用在哪里托管都能使用Heroku数据库服务。...附2 Heroku架构简介 Heroku是一种提供Ruby语言服务云计算应用平台,为客户进行网络编程提供全新体验。 Heroku构建在Amazion AWS之上云计算应用平台。...该平台采用了Ruby on Rails 网络开发框架,客户只需本地计算机设置一个Ruby Gem(Ruby语言程序包管理器)就可在Heroku云中部署和运行应用程序。...客户可以直接从浏览器中访问和编辑自己代码,也可以添加相关语言插件。Heroku平台程序开发上可让你得到本地计算机相同,甚至更好体验。 Heroku是Rails应用最简单部署平台。...Ruby擅长于文本处理、系统管理等任务,大家可以用她来进行实用编程。

    7.3K20

    Chatgpt-Retrieval-Plugin—GPT AI插件 真正联网的人工智能

    ChatGPT 中进行测试 要在 ChatGPT 中测试本地托管插件,请按照以下步骤进行操作: 1.本地运行 API:poetry run dev2.遵循 README 中 ChatGPT...当 API 本地运行时,可以使用 /docs 路径 Swagger UI API 接口进行交互、测试其功能,并查看预期请求和响应模型。...可以通过本地运行应用程序并导航到 http://0.0.0.0:8000/openapi.json,或者 OpenAPI 架构链接[55]中找到请求和响应模型详细规格和示例。...为了更轻松地更新 OpenAPI 架构,您可以本地运行应用程序,然后导航到 http://0.0.0.0:8000/sub/openapi.json 并复制网页内容。...如上所述,这些文件分别定义了应用程序 API 规范和 AI 插件配置。您需要在这两个文件中 url 字段中更改为您部署应用程序地址相匹配。

    92730

    2020年部署Web应用4种方式

    最重要是,如何部署web应用程序?今天在这里,我们将讨论和比较部署这类应用不同平台,并找到最适合你平台!...它是一个自动化CI/CD软件,代理体系结构上工作。那么什么是/代理呢?嗯,代理只是软件一种花哨说法,它安装在一台机器上,用于协调[和绑定]不同构建。...Bitbucket管道工作方式类似于Github动作;使用Git版本控制系统。您可以根据所使用平台进行选择。 管道是您不希望错过一个特性。...图像也可以每个步骤中变化,从而更容易地分离SDLC每个步骤。 优点: 当然,这比手动操作要容易,甚至比使用Jenkins(如果您关心是简单性)。...因此,当托管在这个平台上时,可以轻松地完成针对多个运行时/数据存储库测试,而无需承担本地安装它们负担。 优点: Travis是一个易于设置平台。向项目中添加一些基本构建指令,提交代码……瞧!

    2.9K20

    必备DevOps工具链大盘点

    Azure Pipelines 为 Linux、macOS 和 Windows 建立云托管管道。构建 Web、桌面和移动应用程序,并将其部署到云端或本地。...简而言之,AWS 可以做以下这些事情: 云端运行 Web 和应用服务器,托管动态网站; 将所有文件安全地存储云端,这样你就可以从任何地方访问它们; 使用托管数据库,如 MySQL、PostgreSQL...用户可以选择这些服务来开发和扩展新应用程序,或者公共云中运行现有的应用程序。...Heroku 是一个基于容器云 PaaS。开发人员使用 Heroku 来部署、管理和扩展现代应用程序。这个平台优雅、灵活、易于使用,为开发人员提供了发布应用程序最简单途径。...Hangouts Chat 是进行组织内交流一种有效方式。你可以一名或多名同事发送信息,可以创建聊天室进行多人讨论,并使用机器人来进行工作自动化。

    1.8K30

    2020前端性能优化清单(四)

    这是一场非常激烈对话。最终决定必须由应用程序性能决定。...如今,我们可以探索几种选择,Houssein Djirdeh 和 ason Miller 在有关“网络渲染”[14]对话中对这些选择进行了很好概述。以下概述基于他们谈话。...静态SSR(SSR) 我们将产品作为单个页面应用程序进行构建,但是构建步骤中,所有页面都使用最少 JavaScript 预渲染为静态HTML。...客户端预渲染 服务器端预渲染相似,但不是服务器上动态渲染页面,而是构建时将应用程序渲染为静态 HTML。...AirBnB 一直进行 hydration 实验。他们推迟了不需要组件激活,增加了用户交互(滚动)或空闲时间激活,测试表明它可以改善TTI。 36 始终倾向于自行托管第三方资源。

    3.3K20

    运维必备DevOps工具链大盘点

    Azure Pipelines 为 Linux、macOS 和 Windows 建立云托管管道。构建 Web、桌面和移动应用程序,并将其部署到云端或本地。...简而言之,AWS 可以做以下这些事情: 云端运行 Web 和应用服务器,托管动态网站; 将所有文件安全地存储云端,这样你就可以从任何地方访问它们; 使用托管数据库,如 MySQL、PostgreSQL...用户可以选择这些服务来开发和扩展新应用程序,或者公共云中运行现有的应用程序。...Heroku 是一个基于容器云 PaaS。开发人员使用 Heroku 来部署、管理和扩展现代应用程序。这个平台优雅、灵活、易于使用,为开发人员提供了发布应用程序最简单途径。...Hangouts Chat 是进行组织内交流一种有效方式。你可以一名或多名同事发送信息,可以创建聊天室进行多人讨论,并使用机器人来进行工作自动化。

    1.4K20

    机器学习也能套模版:在线选择模型和参数,一键生成demo

    现在,有一个Web应用程序可以生成用于机器学习模板代码(demo),目前支持PyTorch和scikit-learn。 同时,对于初学者来说,这也是一个非常好工具。...模版中学习机器学习代码,可以少走一些弯路。 这也难怪开发者项目的介绍中,这样写道: 这非常适合机器学习初学者!...streamlit run app/main.py 确保总是从traingenerator目录(而不是从应用程序目录)运行,否则应用程序无法找到模板。...要创建新部署的话,便在traingenerator内部运行: heroku create git push heroku main heroku open 之后,更新已部署应用程序,提交更改并运行:.../tests 该Web应用程序上线了,并且代码也已开源,感兴趣小伙伴可以点击下方链接获取。

    1.2K20

    想开发云应用程序?先选择合适PaaS!

    从一个方面来分析,开发云应用程序平台即服务模式有两种:一种是专用模式,托管本地或私有云中;另一种是公共模式,由第三方提供商来托管,并采用订阅支付模式。那只是问题一个方面。...其中之一是,PaaS某个特定软件即服务(SaaS)环境联系在一起,比如SalesforceForce.com和Heroku Enterprise。...这家公司位于加州普莱森顿,专门开发基于云的人力资源和财务管理应用软件。 第二种模式中,PaaS解决方案整个云操作环境、而不是某个特定应用服务紧密联系起来。...他赞同Hurwitz观点,表示一种就是SaaS式样,以Force绑定到Salesforce这种方式为代表。他表示,Heroku不一样,就在于“你上传想要运行各个组件,然后将应用程序上线。...McCrory表示,对于开发人员来说,转移到PaaS模式最终是为了加快开发应用程序和更新应用程序(一旦部署到生产环境中)。“优点在于,你不需要升级庞大整体式应用程序,而是只要进行小幅增量变化。”

    94960

    【安全设计】10种保护Spring Boot应用程序绝佳方法

    使用斯奈德(Snyk)检查依赖 您很可能不知道应用程序使用了多少直接依赖项。您极有可能不知道应用程序使用了多少传递依赖项。这通常是正确,尽管依赖关系构成了整个应用程序大部分。...还可以常见身份验证机制(如LDAP)集成以获得令牌。 除了不存在问题gold -path视图之外,Vault还帮助您处理被黑客攻击时存在场景。...使用OWASPZAP测试您应用程序 OWASP ZAP安全工具是一个代理,它在运行时对您活动应用程序执行渗透测试。这是一个流行(超过4k明星)免费开源项目,托管GitHub上。...它向您提供了一个报告,显示您web应用程序可以何处被利用,以及关于该漏洞详细信息。 10. 您安全团队是否进行了代码评审 代码评审对于任何高性能软件开发团队都是必不可少。...构建一个简单CRUD应用程序 使用Spring Security和Thymeleaf将基于角色访问控制添加到您应用程序中 安全性和API之旅 准备Heroku上生产一个Spring Boot应用程序

    3.7K30

    那就从API使用开始吧

    有人说,有API地方就有App,有的甚至将API作为构建成功Web应用程序关键因素之一(提高API采用率六大方法)。这足以说明,API已悄悄地融入进每个人生活。...因为进行删除工作时,意味着自己找出了造成干扰位置,意味着找到了冗余无用代码,甚至是找到了能用更少代码实现相同功能途径。代码越少,意味着出错几率越低。...我们目标是为客户打造最好应用,而不是7x24小时地守候计算机旁,关注程序运营中每个细节。 此外,难道我们竞争对手还会自己来打造非核心程序组成部分吗?...数据库 Bonsai–使用强大RESTful搜索引擎ElasticSearch。 Heroku Postgres–最好PostgreSQL托管服务。...MongoHQ–个人喜爱MongoDB数据库供应者。 OpenRedis–我会一直使用Redis服务提供者,永远不会弄丢数据,可扩展能力强。 部署/托管 Heroku–一个不错托管公司。

    1.5K100

    关于“Python”核心知识点整理大全63

    你将看到 “学习笔记”主页,其样式设置正确无误,但你还无法使用这个应用程序,因为我们还没有建 立数据库。 注意 部署到Heroku流程会不断变化。...3处,Django应用默认迁移以及我们开发“学习笔记” 期间生成迁移。 现在如果你访问这个部署应用程序,将能够像在本地系统上一样使用它。...处,我们执行命令ls,以查看服务器上有哪些文件和目录;服务器包含文件和目录应 该本地系统相同。...现在,你可以在在线应用程序URL末尾添加/admin/来登录管理网站了。...Git remote heroku updated (ll_env)learning_log$ 给应用程序命名时,可使用字母、数字和连字符;你想怎么命名应用程序可以,只要指定 名称未被别人使用就行

    10610

    必备DevOps工具链大盘点

    Azure Pipelines 为 Linux、macOS 和 Windows 建立云托管管道。构建 Web、桌面和移动应用程序,并将其部署到云端或本地。...简而言之,AWS 可以做以下这些事情: 云端运行 Web 和应用服务器,托管动态网站; 将所有文件安全地存储云端,这样你就可以从任何地方访问它们; 使用托管数据库,如 MySQL、PostgreSQL...用户可以选择这些服务来开发和扩展新应用程序,或者公共云中运行现有的应用程序。...Heroku 是一个基于容器云 PaaS。开发人员使用 Heroku 来部署、管理和扩展现代应用程序。这个平台优雅、灵活、易于使用,为开发人员提供了发布应用程序最简单途径。...Hangouts Chat 是进行组织内交流一种有效方式。你可以一名或多名同事发送信息,可以创建聊天室进行多人讨论,并使用机器人来进行工作自动化。

    2.4K30
    领券