首页 > 解决方案 > 凤凰饼干解密

问题描述

使用 phoenix-framework:我正在尝试读取授权插件中的 cookie。这是一个签名的 cookie,但我无法再次解密它。我如何获得它的价值?

路由器

  pipeline :api do
    plug :accepts, ["json"]
    plug :fetch_session
    plug :put_secure_browser_headers
    plug :protect_from_forgery
    plug SmiksAanvraagWeb.Plugs.Auth

  end

我的身份验证插件

  @moduledoc false
  def init(_opts) do
  end

  def call(conn, _) do
    IO.inspect conn.cookies["user"] # RESULT: SFMyNTY.g2gDbQAAAARhYWFhbgYA3I_DCncBYgANLwA.wUU0R4tdGDlFgS_o7GOEN7TqPjzLhmQNEJphJtXdEo8

标签: cookieselixirphoenix-framework

解决方案


讨论有点晚了,但我们通过调用选项fetch_cookies/2解决,:signed如此处所写。例如:。fetch_cookies(conn, signed: ["my_cookie_name"])

看看这里的实现,fetch_cookies/2调用verify_or_decrypt/4,它把验证的值放在上面conn.cookies

这样我们就可以fetch_cookies/2处理 cookie 的验证和解码,而不必手动进行。

这同样适用于加密的 cookie,使用:encrypted选项而不是:signed选项。


推荐阅读