OAuth2 装饰器 oauth 感知强​​制身份验证

2024-01-17

我对两者之间区别的理解oauth_aware and oauth_required就是它aware不强制授权,同时required确实如此,但这不是我在实践中看到的。我有下面两个 webapp RequestHandlers,其中之一get()方法装饰有decorator.oauth_aware另一个与decorator.oauth_required。但是,当我在本地或在 App Engine 上运行时,两者都会立即重定向到登录流程。

目标是为了SplashHandler为用户提供一个授权链接(如果尚未授权),如果已授权,则转发至/tasks/.

decorator = OAuth2Decorator(
    client_id=settings.CLIENT_ID,
    client_secret=settings.CLIENT_SECRET,
    scope=settings.SCOPE,
    user_agent='mytasks')

class SplashHandler(webapp.RequestHandler):
  @decorator.oauth_aware
  def get(self):
    if not decorator.has_credentials():
      self.response.out.write(template.render('templates/convert.html',
        {'authorize_url': decorator.authorize_url()}))
    else:
      self.redirect('/tasks/')

class TasksHandler(webapp.RequestHandler):
  @decorator.oauth_required
  def get(self):
    tasks = get_tasks()
    tasks.sort(key=lambda x: x['due'])
    self.response.out.write(template.render('templates/index.html',
                                              {'tasks': tasks}))

application = webapp.WSGIApplication(
    [('/', SplashHandler), ('/tasks/', TasksHandler)], debug=True)

oauth_aware 方法旨在明确回答“我们是否有当前用户的访问令牌?”这个问题。它可以回答这个问题的唯一方法是知道当前用户是谁,并使用应用程序引擎用户 API 来做到这一点,它本身需要权限提示才能通过您看到的重定向获取您的电子邮件/用户 ID。使用 oauth_required,您实际上会获得 2 个重定向,一个是同一个应用程序引擎,然后是一个请求 G+ 或 Docs 等权限的 oauth 重定向。

我碰巧认为这不是特别有用,我认为你的用例更常见,但显然库作者不同意。

话虽如此,oauth_aware 函数内部的代码并不是很复杂,您可以基于它制作自己的装饰器,而不执行第一次重定向。不同之处在于,在您的情况下,同一问题的答案要么是“是”,要么是“我不知道”,而不是明确的“否”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OAuth2 装饰器 oauth 感知强​​制身份验证 的相关文章

随机推荐

  • Angular:如何重置子组件

    我编写了一个 Java 后端 用作我的服务器并将提供所有数据 前端是 Angular 8 应用程序 我在 stackblitz 中创建了前端应用程序的精简版本 https stackblitz com edit angular code g
  • docker 在后台运行 shell 脚本而不退出容器

    我正在尝试在我的 docker 容器中运行 shell 脚本 问题是 shell 脚本生成另一个进程 并且它应该继续运行 除非使用另一个关闭脚本来终止启动脚本生成的进程 当我运行以下命令时 docker run image tag bin
  • 使用 Bluebird Promise 的 While 循环

    我正在尝试使用 Promise 来实现 while 循环 这里概述的方法似乎有效 http blog victorquinn com javascript promise while loop http blog victorquinn c
  • 如何在 IronPython 中卸载 .NET 程序集引用

    加载对程序集的引用后 如下所示 import clr clr AddRferenceToFileAndPath r C foo dll 如何再次卸载组件 为什么有人想要这样做 因为我正在重新编译foo dll并想重新加载它 但编译器让我大惊
  • Pandas:如何从周和年创建日期时间对象?

    我有一个数据框 它提供了两个整数列 其中包含一年中的年份和星期 import pandas as pd import numpy as np L1 43 44 51 2 5 12 L2 2016 2016 2016 2017 2017 20
  • jQuery 的 .delay 方法在幕后是如何工作的?

    我刚看到这个 觉得很酷 console log Starting my element fadeIn delay 3000 fadeOut console log Finishing delay 方法在幕后是如何工作的 我的意思是 它是如何
  • 记录用户交互:log4j?

    我需要你的建议 我有一个Java应用程序 我想记录用户使用我的应用程序的方式 我想知道最常用的按钮是什么 计算应用程序中介绍新患者的平均时间 ETC 您认为最好 最简单的方法是什么 是使用Log4j吗 谢谢您的合作 此致 Daniel 考虑
  • 在新窗口中打开的Web资源中使用Xrm.WebApi方法

    我使用以下命令在新窗口中打开了 HTML Web 资源 Xrm Navigation openWebResource webResource windowOptions data 这是一个 HTML Web 资源 它正在头部加载 Clien
  • 无法在 Flink 新 Kafka Consumer-api (1.14) 中的检查点上向 Kafka 提交消费偏移量

    我使用以下代码引用 Kafka 源连接器的 Flink 1 14 版本 我期待以下要求 在应用程序刚开始时必须读取 Kafka 主题的最新偏移量 在检查点上 它必须将消耗的偏移量提交给 Kafka 重新启动后 当应用程序手动终止 系统错误时
  • PHP 中 /Filter /FlateDecode PDF 流中的数据提取

    我无法解密流中的数据 例如 56 0 obj lt lt Length 1242 Filter FlateDecode gt gt stream x n b Kq whole binary is omitted endstream endo
  • Leaflet MarkerCluster:是否可以打开多个集群组?

    我最近开始使用传单 我发现了很棒的插件传单标记集群 我目前正在尝试同时打开多个集群组 不幸的是我在谷歌上找不到任何东西 我有几个聚类组 并从一个标记到另一个标记建立连接 用户应该能够打开所绘制的线所属的两个集群组 因此我的问题是 是否有一个
  • SciPy KDE 梯度

    我正在使用内核密度估计 KDE 的 SciPy 实现 http docs scipy org doc scipy reference generated scipy stats gaussian kde html http docs sci
  • java web 服务的推荐框架[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从一个文件绘制多个数据集

    注意 我可以控制数据文件的格式 但它必须是单个文件 我正在尝试使用 gnuplot 在同一个图表上绘制多个数据集 理想情况下我想绘制这样的东西 data 1 0 0 data 2 0 0 data 1 1 1 data 2 0 1 data
  • 解析json数组?

    我有一个如下所示的 JSON agentsArray ID 570 picture 03803 png name Bob ID 571 picture 02103 png name Tina 现在我试图循环每个数组元素 使用qt json图
  • 如何在 C# 中同时将控制台输出到多个流?

    我有一个程序 它获取控制台输出并将其写入日志文件 但它不再显示在控制台窗口中 有没有办法将其保留在窗口中 但也将其写入日志文件 Update appLogStream new FileStream logFile FileMode Appe
  • MacOSbrew安装libsndfile但仍然找不到

    我刚刚从 Windows 切换到 Mac 并且尝试使用 brew 为我的一个 C 项目安装 libsndfile 但安装后仍然显示终端中找不到错误 我似乎无法弄清楚为什么 brew install libsndfilelibsndfile
  • Azure - 在 Java Spring Boot 中使用用户管理身份访问 Key Vault:错误详细信息:ManagedIdentityCredential 身份验证不可用?

    我有一个 Java Spring boot 应用程序 仅从 Azure Key Vault 读取机密 以下是使用的步骤 创建了应用程序注册 复制应用程序注册详细信息 生成的秘密 授予对 Azure Key Vault 的访问权限 下面是我的
  • 底部导航上方的底部工作表

    我的目标是将 底页 放在BottomNavigationView像这样 但它仍然保持以下方式 两种观点都崩溃了 这是我的主要活动的 xml
  • OAuth2 装饰器 oauth 感知强​​制身份验证

    我对两者之间区别的理解oauth aware and oauth required就是它aware不强制授权 同时required确实如此 但这不是我在实践中看到的 我有下面两个 webapp RequestHandlers 其中之一get