问题标签 [plug]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
elixir - 如何在 Phoenix 中使用 2 个身份验证插件?
我的应用中有两个用户,买家和管理员,他们都有不同的登录详细信息,管理员使用电子邮件和密码登录,买家使用他们的电话号码和我们发送给他们的代码登录。所以,我做了两个认证插件。这是我将插件添加到浏览器管道的方式:
所以问题来了,当管理员登录时,他们得到登录菜单,他们可以访问所有其他页面。当买家登录时,我可以从日志中看到(我 IO.inspect 连接,所以我知道他们已经登录),他们仍然得到“退出”菜单,他们也无法访问某些页面。如果我将管道顺序更改为 AffirmWeb.BuyerAuth 排在最后,那么现在买家可以访问其他页面而管理员无法访问。关于如何解决这个问题的任何指导?
routing - 有没有办法让凤凰插头只用于一条路线?
在凤凰城,我的路线如下:
但是我想为最后一条路线(POST)设置一个插头。
我将如何使用当前的工具来解决这个问题?
elixir - 不使用 pheonix 时启用开发热重载的最佳方法是什么?
所以我正在学习 Elixir 和 Pheonix 看起来太多开始学习,所以我用 Plug and Poison 制作了一个简单的 JSON Rest API,但要查看任何更改,我需要停止服务器并mix run --no-halt
再次运行。我来自 nodeJS,它只nodemon
跟踪依赖于根模块的所有文件,并在看到任何更改时重新加载整个服务器。混合或长生不老药有类似的东西吗?我知道您可以使用 OTP 重新加载代码的特定部分,如果我的服务器在保存时这样做会是最好的,但现在我只想更快地响应我所做的事情。谁能指出我正确的方向?
json - 编写自定义插件,它可以处理并返回正文中格式错误的 JSON 的正确错误
我正在尝试编写一个插件,如果请求的 JSON 格式错误,这将生成一个自定义错误,这在我们的场景中很常见(因为我们在邮递员中使用变量。例如,有时值之外没有引号,它会导致格式错误JSON)。我得到的唯一帮助是https://groups.google.com/forum/#!topic/phoenix-talk/8F6upFh_lhc这当然不起作用。
这条线
如何正确阅读和解析正文。我知道在 POST 中,我们总是会收到 format=JSON 请求
问题:问题是正文只能读取一次。如果我之前在自定义插件中阅读过,Plug.Parses 将无法找到正文
vim - ohmyzsh - 不是编辑器命令:Plug
我正在尝试设置我的终端。我的.vimrc
文件正常工作,我能够看到所有插件。
但是,在我安装后,我ohmyzsh
收到以下错误。
这就是我的.vimrc
文件的外观。
phoenix-framework - 从/在 Phoenix 框架中提供静态 html(和其他)
我正在使用 Phoenix 框架实现的 API 服务器。JSON API 由/api/<version>
URL 提供。服务器还需要提供来自 的静态.html
(和其他,,.css
等.js
)文件/
:它实际上是一个用另一种语言开发并编译成 HTML5、JS 和 CSS 的小型 SPA。行为应该是:
/
应该送达index.html
文件;/some/file.html
如果路径存在,则应该file.html
从some
目录中提供文件,如果不存在,则为 404;- 像这样的 URL
/some/
应该发回 403 或 404 以防止目录列表 - 下面的一切
/api
都由专用控制器管理。
生成项目mix phx.new --no-ecto --no-html --no-gettext --no-webpack static
以摆脱.css
、.js
文件和模板。我还priv/static
为静态资产创建了一个目录。
我必须从 in 的参数列表中删除,only: ~w(css fonts images js favicon.ico robots.txt)
才能在根 URL 处提供文件。除错误外,一切正常:plug Plug.Static
endpoint.ex
- 上的请求
/
显示带有日志的 Phoenix 错误页面[debug] ** (Phoenix.Router.NoRouteError) no route found for GET / (StaticWeb.Router)
。我添加了{:plug_static_index_html, "~> 1.0"}
所以我摆脱了这个问题,但调用会/subdir
发回 Phoenix 错误页面。我只是不知道在哪里以及如何告诉 Phoenix 发回 403 或 404(除了/
)。 - 在非退出文件上调用 URL 不会返回 404,而是返回 Phoenix 错误页面。我试图在其中创建一个
static
管道,router.ex
但似乎流程没有到达那里。文档指出:如果找不到静态资产,Plug.Static
只需将连接转发到管道的其余部分。但 我看不到将 404 回复放在哪里。
这是我尝试的两种配置:
配置我
会议二
我删除了所有关于静态内容的东西,endpoint.ex
并在其中添加了一个static
管道router.ex
任何提示都会有所帮助。
2020 年 8 月 13 日更新
"/"
在末尾添加了一条关于范围的全部规则router.ex
,至少对于任何错误请求我都会收到 404。我只是想知道这一切有多干净......
elixir - 您如何在 Phoenix 框架中运行中间件函数后响应?
我正在与 Phoenix 一起在 Elixir 中开发一个简单的网站。我想添加一些在生成响应后运行的自定义中间件。例如,为了记录每个响应中的总字节数,我想要一个这样的 Plug
尝试在路由器中的一个 Phoenix 管道中使用这个插件是行不通的,它们都在响应呈现之前运行。相反,它会导致一个FunctionClauseError
since conn.resp_body
is nil
。我不确定如何使用此插件,以便在呈现响应后运行它。
elixir - 处理请求后运行插件管道
Plugs 管道是构建应用程序的绝佳方式。目前虽然我只在请求到达控制器之前应用管道来过滤/格式化数据。有没有办法在处理每个视图后应用管道运行?我有一个 JSON api,我在每个视图渲染函数上运行两个数据转换。
有没有更简洁的方法来处理这个问题,或者这是我只需要在我的视图模块中的每个渲染函数上做的事情?
更新
正如@sabiwara 指出的那样,有register_before_send
回调。我已经尝试为我的用例实现它,但似乎回调更多的是用于记录而不是操纵响应。
我试过了
conn.resp_body
是我尝试将其转换为地图但仍然不行的列表。