ruby-on-rails - 如何在 API 模式下使用 Doorkeeper 处理 OAuth 流?
问题描述
场景很简单:
- 带有Doorkeeper 提供程序的仅 Rails API服务器
- 一个移动应用程序和一个SPA(比如说 React),用户希望使用电子邮件和密码进行注册和登录
当你有一个普通的Rails Stack时,你需要定义一个authorizeUrl
用户被重定向到哪里以提供他们的凭据并返回到带有authorizationCode的 Web/Mobile 应用程序。在 API 模式下,您的“authorizeUrl”基本上位于同一个应用程序内。
当您的提供商无法提供OAuth
登录页面时,处理流程的适当方式是什么(因为是仅 API 的服务器)
解决方案
您必须在 React 中构建一个登录表单,该表单发送 HTTP POST 请求以获取 OAuth 令牌,例如在 /oauth/token 上,并使用用户输入的凭据(在请求正文中,在客户端 id/secret 旁边(取决于您的OAuth 服务器配置)。
然后在响应时,您将获得一个访问令牌,您可以在每个后续请求中添加授权标头,以便您的服务器知道其合法请求。
通常,如果您将Axios用作 HTTP 客户端,则可以使用拦截器将访问令牌添加到每个请求中(如下所述:https ://medium.com/swlh/handling-access-and-refresh-tokens-using-axios -interceptors-3970b601a5da)。
这是“标准”OAuth 工作流程,我不确定您的后端堆栈是否暗示有关身份验证的一些自定义,但似乎此工作流程仍然有效。
推荐阅读
- reactjs - 在 ReactJS 中实现身份验证持久性的正确方法是什么
- firebase - Cloud Functions、Firestore 触发器、递归删除不起作用
- python - 仅当有足够的值来计算中位数时才使用 np.nanmedian
- android - Android全屏无法通过文档操作
- python - 如何在python中更新动态列表?
- python - `np.linalg.solve` 得到解矩阵?
- android - 生命周期范围和 SharedFlow 的组合是否消除了对 ViewModel 的需求?
- json - 在具有文本字段的 postgresql 中更新 json 对象
- python - 多元正态分布的累积密度函数的逆
- c# - 如何设置 uri 重写以读取特定的 url 或文件?