凤凰路由器范围问题

时间:2018-11-07 06:27:27

标签: elixir phoenix-framework router

我该如何向api / events发送GET请求,并且仅获得公共事件,但是如果我发送auth令牌,那么我将获得用户的事件? 基本上使用相同的路由,但是如果有用户登录,则返回不同的内容。 我相信它必须与路由器做一些事情,如果我仅发送到/ api范围,它将永远不会有用户,但是如果我发送给没有令牌的[:api,:jwt_authenticated],则显然表明我是未登录。 我尝试为未登录但返回相同结果的返回值单独定义

  scope "/api", DotooAppWeb do
pipe_through(:api)
get("/users", UserController, :index_not_logged)
post("/users", UserController, :create)
get("/events", EventController, :index_not_logged)

scope "/auth" do
  post("/identity/callback", AuthenticationController, :identity_callback)
end

pipe_through(:jwt_authenticated)

resources("/users", UserController, only: [:index, :create, :show, :update, :delete])
resources("/events", EventController, only: [:index, :create, :show, :update, :delete])
end

有没有解决的办法? 我关注这篇文章主要是为了进行身份验证:http://blog.nathansplace.co.uk/2018/ueberauth-and-guardian

1 个答案:

答案 0 :(得分:0)

尽管您可以从技术上使它工作,但我认为这不应该在路由器中发生。

如果您的动机是分离这两种情况的逻辑,则可以让UserController.index函数仅检查用户是否登录,然后委派给获取公共/用户特定事件的函数。它还具有非常透明的优点,因为所有确定端点返回值的逻辑都在一个地方。

希望有帮助!