请原谅新手问题,但我已经找到了大量保护 功能 插件的例子:
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
答案 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]