检查用户是否在 Phoenix 模板中通过身份验证
Checking if user is authenticated in Phoenix templates
我正在开发 phoenix 应用程序。认证部分用Guardian
.
实现
与典型的网站一样,该应用程序有页眉、页脚和侧边栏。这些是布局文件夹中的静态页面。
树视图
-lib
|--admin_app_web
|--templates
|--layouts
|--app.html.eex
|--header.html.eex
|--sidebar.html.eex
|--main.html.eex
app.html.eex
看起来像这样
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
</head>
<body>
<%= render "header.html", conn: @conn%>
<%= render "flash.html", conn: @conn%>
<%= render "main.html", assigns %>
<%=# render "footer.html" %>
<script src="<%= static_path(@conn, "/js/app.js") %>"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
</body>
</html>
main.html.eex
在这些行上
<main role="main" class="row my-3">
<div class="col-2">
<%= render "sidebar.html" %>
</div>
<div class="col">
<%= render @view_module, @view_template, assigns %>
</div>
</main>
我只想在 user
为 authenticated
时渲染 sidebar.html.eex
,如何实现这个?
您可以使用 Guardian.Plug.authenticated?/2
检查用户是否经过身份验证,并使用 if
有选择地呈现边栏模板。
<div class="col-2">
<%= if Guardian.Plug.authenticated?(@conn, []), do: render("sidebar.html") %>
</div>
我正在开发 phoenix 应用程序。认证部分用Guardian
.
与典型的网站一样,该应用程序有页眉、页脚和侧边栏。这些是布局文件夹中的静态页面。
树视图
-lib
|--admin_app_web
|--templates
|--layouts
|--app.html.eex
|--header.html.eex
|--sidebar.html.eex
|--main.html.eex
app.html.eex
看起来像这样
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
</head>
<body>
<%= render "header.html", conn: @conn%>
<%= render "flash.html", conn: @conn%>
<%= render "main.html", assigns %>
<%=# render "footer.html" %>
<script src="<%= static_path(@conn, "/js/app.js") %>"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
</body>
</html>
main.html.eex
在这些行上
<main role="main" class="row my-3">
<div class="col-2">
<%= render "sidebar.html" %>
</div>
<div class="col">
<%= render @view_module, @view_template, assigns %>
</div>
</main>
我只想在 user
为 authenticated
时渲染 sidebar.html.eex
,如何实现这个?
您可以使用 Guardian.Plug.authenticated?/2
检查用户是否经过身份验证,并使用 if
有选择地呈现边栏模板。
<div class="col-2">
<%= if Guardian.Plug.authenticated?(@conn, []), do: render("sidebar.html") %>
</div>