#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后台认证功能就差不多可以了。

推荐阅读:

相关文章