#phoenix & ex_admin 搭建管理後臺

用習慣了django admin 之後,無論切換到什麼開發環境,都會首先看一下有沒有對應的admin庫。果不其然,phoenix還真有,似乎也只有這一個。

github : smpallen99/ex_admin

#第一步

第一步的內容請參考作者的github,怎麼配置寫得很清楚。

#第二步

修改一下brunch 的配置內容,載入ex_admin 的css js 文件

exports.config = { // See http://brunch.io/#documentation for docs. files: { javascripts: { joinTo: { "js/app.js": /^(web/static/js)|(node_modules)/, "js/ex_admin_common.js": ["web/static/vendor/ex_admin_common.js"], "js/admin_lte2.js": ["web/static/vendor/admin_lte2.js"], "js/jquery.min.js": ["web/static/vendor/jquery.min.js"], } }, stylesheets: { joinTo: { "css/app.css": /^(web/static/css)/, "css/admin_lte2.css": ["web/static/vendor/admin_lte2.css"], "css/active_admin.css": ["web/static/vendor/active_admin.css.css"], }, order: { after: ["web/static/css/app.css"] // concat app.css last } }, templates: { joinTo: "js/app.js" } },

此時應該可以刷出admin的界面了

#第三步

既然是管理後臺,自然要有認證纔行。

這裡不寫認證的內容,寫出來太長,推薦看《programming-phoenix》,書裏非常詳細的講解了如何一步一步寫一個用戶認證功能,這裡主要說一下怎麼使ex_admin認證登錄。

新增文件:lib/YourProjectName/authentication.ex

defimpl ExAdmin.Authentication, for: Plug.Conn do alias MyApp.Router.Helpers alias MyApp.Authentication, as: Auth def use_authentication?(_), do: true def current_user(conn), do: Auth.current_user(conn) def current_user_name(conn), do: Auth.current_user(conn).name def session_path(conn, action), do: Helpers.session_path(conn, action) #註:ex_admin會調用你的sessions模塊的:new :create :destroy函數,所以你的路由應該是這樣的:resources "/sessions",SessionController, only: [:new, :create, :destroy] end defmodule MyApp.Authentication do def current_user(conn) do MyApp.Auth.current_user(conn) end end

然後配置路由:

defmodule MyApp.Router do use MyApp.Web, :router use ExAdmin.Router ......此處活力若干磚塊........ pipeline :authenticated do plug :authenticate end defp authenticate(conn, _params) do if conn.assigns.current_user do conn else conn |> put_flash(:error, "You must be logged in.") |> redirect(to: "/sessions/new") 如果沒有登錄,就重定向到登錄頁面 |> halt() end end scope "/admin", ExAdmin do pipe_through [:browser, :authenticated ] admin_routes end .......此處活力若干磚塊.........end後臺認證功能就差不多可以了。

推薦閱讀:

相關文章