Elixir Phoenix Absinthe GraphQL API Web 和移动应用程序中的身份验证

Elixir Phoenix Absinthe GraphQL API authentication in both web and mobile app's

我正在为我的应用开发 Absinthe GraphQL API。我还在学习程序(所以请放轻松)。

我有一个 Absinthe/GraphQL MyAppWeb.schema.ex 文件,我在其中用于查询和更改。我的问题是如何使用此 API 在移动和 Web 应用程序上对用户进行身份验证?

如何在我的 Web 应用程序中设置 cookie(httpOnly & secure)并在单个 Absinthe API 中设置 access/refresh 令牌来为我的网站和移动应用程序提供服务。基本上我想学习的是如何根据特定平台对用户进行身份验证。

如果我的问题听起来有点混乱,我很乐意提供与我的问题相关的更多信息。如果有人能解释一下这个过程,我将不胜感激,我已经坚持了一段时间。

我会避免使用苦艾酒提供的身份验证机制(如果有的话)。根据您使用的前端,我会使用 JSON API 身份验证。服务器上的流程如下:

  1. 创建一个登录端点,它将接收用户和密码,并将 return 刷新令牌。
  2. 创建端点以将刷新令牌交换为访问令牌。
  3. 使用像 guardian 这样的库来生成你的 refresh/access 令牌。
  4. 创建一个 phoenix plug 用于验证,它将检查您的令牌,guardian 有一些内置的插件。

现在您必须在设备上实施:

  1. 能够在设备上保存刷新和访问令牌。
  2. 有一个全局处理程序,用于在授权请求中注入访问令牌。
  3. 有一个全局处理程序来处理访问令牌过期的情况。 (您通常会检查您的请求是否 return 未经授权,然后您应该使用刷新令牌从服务器请求一个新的访问令牌)

这似乎是一个粗略的实现,但是我建议在实现您的系统时不要使用您不知道它在幕后如何工作的黑盒库。