模块插头的防护装置?

时间:2016-02-29 05:42:56

标签: elixir phoenix-framework

请原谅新手问题,但我已经找到了大量保护 功能 插件的例子:

FALSE

但我没有找到如何使用 模块 插件执行此操作的示例:

plug :assign_welcome_message, "Hi!" when action in [:index, :show]

我似乎移动的任何地方plug Guardian.Plug.EnsurePermissions, handler: Mp.Api.AuthController, admin: [:dashboard] when action in [:protected_action] 或者给我一个语法错误或一个未定义的函数when action in [:protected_action]。我知道我做了一些愚蠢的事情,但我看不到什么!

帮助!

when/2

1 个答案:

答案 0 :(得分:18)

不傻!只是一些语法糖的结果。

Plugs take two arguments,第二个是选项的论据。在您的示例中,您希望将关键字列表作为该选项参数传递。

但是,syntactic sugar that lets your drop the square brackets仅在关键字列表是函数中的最后一个参数时才有效。

而不是

plug Guardian.Plug.EnsurePermissions,
  handler: Mp.Api.AuthController,
  admin: [:dashboard] when action in [:protected_action]

尝试使用显式关键字列表语法:

plug Guardian.Plug.EnsurePermissions,
  [handler: Mp.Api.AuthController,
  admin: [:dashboard]] when action in [:protected_action]