使用没有模型的守护者

时间:2016-06-15 21:01:52

标签: authentication elixir phoenix-framework

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

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

事情是,我没有,我不希望在我的后端拥有模型,但Guardian需要一个资源来序列化令牌。

在这种情况下是否可以做某事?

当我调用方法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"}

感谢。

1 个答案:

答案 0 :(得分:0)

如果您不希望Guardian与您的数据库中存在的用户匹配令牌,那么我可以将您的序列化器存根:

"ok"

然后,在致电Guardian.Plug.current_resource

时,您将只有select name as Name, $a.type[0] as Role from (select expand(in('has_father')) from (select from Node where name = 'n1111') unwind in) let $a=(select inE('UserRole').type as type from ( traverse out('has_father'),in('UserRole') from $parent.$current while out('UserRole').@rid <> #21:0 ) where in('UserRole').@rid = #21:0 limit 1 )