如何只确保在elixir模块中的某些功能上进行身份验证

时间:2016-04-02 15:42:17

标签: elixir phoenix-framework

我正在尝试在phoenixframework项目中实现Guardian jwt。

我有一个带有以下功能的user_controller.ex模块:index,create,show,update和delete

我只想确保用户在更新和删除时进行身份验证

如果我将plug Guardian.Plug.EnsureAuthenticated, handler: SessionController放在模块顶部所有功能都要求身份验证。

我试着这样做:

plug Guardian.Plug.EnsureAuthenticated, %{ on_failure: { SessionController, :unauthenticated } } when not action in [:index, :create, :show],其中 按预期工作但我在控制台中收到以下错误:[warn] :on_failure is deprecated. Use the :handler option instead

所以问题是:如何只使用handler参数来要求更新和删除身份验证?

1 个答案:

答案 0 :(得分:7)

plug Guardian.Plug.EnsureAuthenticated, [handler: SessionController] when action in [:update, :delete]