我想知道是否可以在没有用户模型的情况下使用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/