我想知道是否可以在没有用户模型的情况下使用Guardian,以及如何使用它。

我仅将Phoenix用于服务器,微小的API和通道。我的浏览器中有一个带有PouchDB的数据库,我想授权访问该微型API。

问题是,后端没有模型,也不想拥有模型,但Guardian需要资源来序列化 token 。

在这种情况下可以做些什么吗?

当我调用Guardian.serializer.for_token(user)Guardian.encode_and_sign(:token)方法(带有用户映射)时,返回的是未知资源类型。

我的guardian_serializer.ex是:

@behaviour Guardian.Serializer

def for_token(user = %{:id => 88888888}), do: {:ok, "User:#{user.id}"}
def for_token(_), do: {:error, "Unknown resource type"}

def from_token("User:" <> id), do: {:ok, "User:#{id}"}
def from_token(_), do: {:error, "Unknown resource type"}

谢谢。

最佳答案

如果您不希望Guardian将 token 与数据库中现有的用户进行匹配,那么我可以将序列化程序存根如下:

def for_token(_),  do: {:ok, "ok"}
def from_token(_), do: {:ok, "ok"}

然后,当您调用"ok"时,除了Guardian.Plug.current_resource之外,您将一无所有

关于authentication - 在没有模型的情况下使用监护人,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37845707/

10-10 11:09