小编gae*_*ard的帖子

重定向后暂停连接

在控制器内部,我正在检查连接的会话以验证会话是否附加到用户.如果没有,我将其重定向到另一页.

halt回报我的错误,如果我尝试重定向后调用它:

在Plug.Conn.halt/1中没有匹配的函数子句

如果没有halt原始控制器的页面,则在控制台中执行渲染并打印错误(模板在没有用户的情况下呈现):

(exit)引发异常:(UndefinedFunctionError)undefined function:nil.username/0

所以我的问题是:是否可以halt在重定向后调用?

  • 如果是,我的代码的哪一部分是错的?
  • 如果不是,我该如何阻止控制器呈现页面?

这是我的控制器的代码和它中使用的模块.

defmodule Mccm.DashboardController do
  use Mccm.Web, :controller

  import Mccm.Plug.Session
  import Mccm.Session, only: [current_user: 1]

  plug :needs_to_be_logged_in

  def index(conn, _params) do
    conn
    |> render "index.html", user: current_user(conn)
  end
end
Run Code Online (Sandbox Code Playgroud)
defmodule Mccm.Plug.Session do
  import Mccm.Session, only: [logged_in?: 1, is_teacher?: 1]
  import Phoenix.Controller, only: [redirect: 2]
  import Plug.Conn, only: [halt: 1]

  def needs_to_be_logged_in(conn, _) do
    if !logged_in?(conn) do
      conn
      |> redirect to: "/"
      |> halt # …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

6
推荐指数
1
解决办法
1650
查看次数

标签 统计

elixir ×1

phoenix-framework ×1