ajax 调用后的 Elixir 会话数据

Elixir Session data after ajax call

我正在使用 Phoenix 框架构建我的应用程序。 我的用户使用 OAuth2 登录,之后他们被重定向到我的网页。 我的应用程序有一个插件,它将用户保存在会话变量中:

  def call(conn, _) do

    user = get_session(conn, :user)
    
    #Find user in database
    case SmiksAanvraag.User_Functions.getUser(user) do
      result ->
        conn
              |> assign(:user, user)
              |> assign(:username, result)
              |> assign(:isAdmin, User_Functions.isAdmin(user))
      "" -> IO.inspect "Not logged in" 
            conn |> redirect(external: "http://www.localhost:4000/") |> halt()
    end
  end

  def login(conn, user) do
    conn
    |> assign(:user, Map.get(user, "username"))
    |> assign(:username, SmiksAanvraag.User_Functions.getUser(Map.get(user, "username")))
    |> put_session(:user, Map.get(user, "username"))
    |> configure_session(renew: true)
  end

这一切都很好,直到用户对服务器进行 Ajax 调用(我使用的是 Axios)。在那一刻,会话信息丢失了。 这个问题的典型解决方案是什么?我通过 Ajax 调用(安全地)传递哪些信息以通知服务器用户仍处于登录状态?此时此刻,我进行以下调用:

        let req = axios.create({
            withCredentials: true,
            headers: {
                'X-Requested-With': 'XMLHttpRequest',
                'x-csrf-token': document.head.querySelector("[name~=csrf-token][content]").content
            },
            params: {
                offset: me.state.offset,
                searchData: searchData
            }})
        req.get(`${Url.value}/api/getAllData`).then(response =>
        {
            this.setState({data: response.data.data, count: response.data.count})
        }).catch(function (error) {
            console.log(error);
        });

好的,我找到了。我的axios header写错了...应该是'Accept': 'application/json', 'Content-Type': 'application/json'