【问题标题】:Phoenix router scope issue凤凰路由器范围问题
【发布时间】:2019-02-22 00:30:50
【问题描述】:

我怎么能这样做,我向 api/events 发送一个 GET 请求,我只获得公共事件,但如果我发送一个身份验证令牌,那么我会获得用户的事件? 基本上使用相同的路线,但如果有用户登录,则返回不同的东西。 我相信它必须与路由器做一些事情,如果我只发送到 /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

【问题讨论】:

    标签: elixir phoenix-framework router


    【解决方案1】:

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

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

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 2021-04-10
      • 1970-01-01
      • 2016-01-22
      相关资源
      最近更新 更多