场景很简单:
- 一个 Rails API-only 服务器,带有 Doorkeeper 供应商
- 一个移动应用和一个SPA(比方说React),用户想要使用电子邮件和密码注册和登录
当你有一个普通的 Rails Stack 时,你需要定义一个 authorizeUrl
用户被重定向以提供他们的凭据并返回到具有 authorizationCode 的网络/移动应用程序。在 API 模式下,基本上您的“authorizeUrl”位于同一个应用程序中。
当您的提供商无法提供登录页面(因为它是仅 API 服务器)时,处理 OAuth
流程的合适方法是什么
最佳答案
您必须在 React 中构建一个登录表单,该表单发送一个 HTTP POST 请求以获取 OAuth token ,比如在/oauth/token 上,其中包含用户输入的凭据(在请求正文中,与客户端 ID/密码一起(取决于您的 OAuth 服务器配置)。
然后在响应时您将获得一个访问 token ,您可以将其添加到每个后续请求的授权 header 中,以便您的服务器知道其合法请求。
通常,如果您使用 Axios作为 HTTP 客户端,可以使用拦截器将访问 token 添加到每个请求(如此处解释:https://medium.com/swlh/handling-access-and-refresh-tokens-using-axios-interceptors-3970b601a5da)。
这是“标准”OAuth 工作流程,我不确定您的后端堆栈是否暗示了一些关于身份验证的自定义,但看起来这个工作流程仍然有效。
关于ruby-on-rails - API模式下Doorkeeper如何处理OAuth流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62236940/