使用 Guardian 1 和 Phoenix 1.3 验证 ID



我使用 Guardian 1 和 Phoenix 1.3。我正在尝试制作一个使用 JWT 的 API。我现在对路由进行身份验证。例如,如果标头中没有有效的令牌,则无法访问get api/users/

我有一个管道,如下所示:

defmodule PhxAuthApi.Auth.AuthPipeline do
  use Guardian.Plug.Pipeline, otp_app: :phx_auth_api,
    module: PhxAuthApi.Auth.Guardian,
    error_handler: PhxAuthApi.Auth.AuthErrorHandler
  plug Guardian.Plug.VerifyHeader, claims: %{"typ" => "access"}, realm: :none
  plug Guardian.Plug.EnsureAuthenticated
  plug Guardian.Plug.LoadResource, ensure: true
end

我想要实现的是,仅当用户在令牌资源中具有相应的:id时,调用put api/users/1的用户才能访问该路由。我知道我可以通过调用来获取资源

resource = Guardian.Plug.current_resource(conn)

但是我该怎么做呢?制作另一个管道?

那看起来如何,我找不到任何关于实现此目的的文档?

我对Elixir和Phoenix相当陌生,这是我打算发布的第一个项目。

最简单的方法是创建另一个Plug,该将在Guardian.Plug.LoadResource之后包含在同一个管道中。

此时,资源已加载,您需要实现call回调以拒绝访问,除非用户在其令牌资源中具有相应的:id

相关内容

  • 没有找到相关文章

最新更新