问题标签 [guardian]

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.

0 投票
1 回答
210 浏览

elixir - Guardian DB 初始设置(MyApp.Repo.insert/1 未定义)

我正在尝试将 Guardian 0.14 和 Guardian_db 0.8 与 elixir/phoenix 一起使用。但是,我一直在挂钩中遇到以下错误:

我的代码如下:

配置

挂钩

为什么它不使用我在配置中传递给它的 repo?

另外,我在里面放了一个撬子,然后跑了GuardianDb.repo,它又回来了MyApp.Repo。就像它没有采用我的回购配置一样。

0 投票
1 回答
768 浏览

cookies - 使用 Guardian 在 Phoenix 中记住我的功能

我正在为使用 Guardian 处理身份验证的 Web 应用程序开发登录系统。在我的 Guardian 配置中,我有

通过调用将用户的令牌存储在 cookie 中:

像这样,令牌有效期为 30 天,即使浏览器关闭(cookie 的预期行为)也会保留在那里。但是,用户应该能够选择在登录期间是否被记住。如果没有,则必须在关闭浏览器窗口时从 cookie 中删除令牌。我试过设置

它似乎完成了所需的行为。说:

  1. ttl: {0, :days} 是在浏览器窗口关闭之前对用户进行身份验证的正确方法吗?如果是这样,如何在 Guardian.Plug.sign_in(conn, user) 被调用之前以编程方式更改管道中的 ttl 值?
  2. Guardian 是否能够根据用户选择将令牌存储在 cookie 或会话存储中?(选定的 cookie 记住我,如果没有,则会话存储)
0 投票
3 回答
1101 浏览

elixir - 使用 Guardian 1 和 Phoenix 1.3 对 JWT 进行身份验证

我做了一个可以在这里找到的项目:

https://github.com/rootkc/phx_auth_api

当我尝试发布到:

与身体:

那是数据库中的用户。我得到回应:

}

然后,当我将该令牌放入标题中时: 在具有 Guardian 管道插件Àuthorization: :token 的调用http://0.0.0.0:4000/api/users中,我收到消息:未经身份验证

我不知道,我做错了什么。这是我第一个真正的 Phoenix 项目,我尝试遵循各种指南,但{:guardian, "~> 1.0-beta"}似乎很新,文档很糟糕。

0 投票
1 回答
205 浏览

elixir - 使用 Guardian 1 和 Phoenix 1.3 验证 id

我使用 Guardian 1 和 Phoenix 1.3。我正在尝试制作一个使用 JWT 的 API。我现在对路由进行身份验证。例如,如果get api/users/标头中没有有效的令牌,您将无法访问。

我有一个看起来像这样的管道:

我想要实现的是,如果用户在令牌资源中put api/users/1有对应的,则调用的用户只能访问该路由。:id我知道我可以通过调用来获取资源

但是我该怎么做呢?制作另一个管道?

看起来怎么样,我找不到任何关于实现这一目标的文档?

我对 Elixir 和 Phoenix 还很陌生,这是我打算发布的第一个项目。

0 投票
1 回答
150 浏览

elixir - 即使 current_user 为 nil,Guardian 也让用户访问控制器?

如果用户发送了一个未过期的令牌,但该特定用户已不存在,Guardian仍然让用户访问控制器。

我已经添加{:ok, nil}current_user.ex它,它只是杀死了我认为不是正确方法的连接,因为我需要像错误一样向用户返回一些东西。我不确定我应该在那里使用什么?

这是我的路由器:

这是我的current_user

先感谢您。

0 投票
1 回答
351 浏览

elixir - 身份验证失败

我有一个凤凰应用程序,我想保护除登录和用户创建路线之外的所有路线。为此,我使用 Guardian 和 ComeOnIn 包。(我试图关注这个博客)
我设法在会话路由中向客户端发送了一个令牌,并且用户的创建也在工作。
但是,当我想显示所有用户(即用户模块的索引路由)时,我得到一个身份验证错误(在我的测试中,我还没有 gui)
这是我所做的:用户控制器:

这是router.ex

以下是 Guardian 所需的模块:

错误处理程序:

最后是我的测试文件:

每次我运行测试时,我总是收到来自我的错误处理程序的错误 Authentication already send。
为了让我的测试通过,我缺少什么?

编辑:
这是输出:

1) 测试索引列出所有用户 (WarehouseWeb.UserControllerTest) test/warehouse_web/controllers/user_controller_test.exs:32
** (Plug.Conn.AlreadySentError) 响应已经发送
代码:conn = get conn, user_path(conn, :index )
stacktrace:
(plug) lib/plug/conn.ex:508: Plug.Conn.resp/3
(plug) lib/plug/conn.ex:495: Plug.Conn.send_resp/3
(guardian) lib/guardian/ plug/ensure_authenticated.ex:61:Guardian.Plug.EnsureAuthenticated.respond/1
(仓库)lib/warehouse_web/auth/auth_pipeline.ex:1:WarehouseWeb.Guardian.AuthPipeline.plug_builder_call/2
(仓库)lib/warehouse_web/router。例如:8:WarehouseWeb.Router.api_auth/2
(仓库)lib/warehouse_web/router.ex:1:WarehouseWeb.Router 中的匿名 fn/1。match_route /4
(phoenix) lib/phoenix/router.ex:273: Phoenix.Router。call /1
(仓库) lib/warehouse_web/endpoint.ex:1: WarehouseWeb.Endpoint.plug_builder_call/2
(仓库) lib/warehouse_web/endpoint.ex:1: WarehouseWeb.Endpoint.call/2
(phoenix) lib/phoenix/ test/conn_test.ex:224: Phoenix.ConnTest.dispatch/5
test/warehouse_web/controllers/user_controller_test.exs:33: (测试)

0 投票
1 回答
301 浏览

configuration - Guardian db未将记录插入数据库

我的混合文件包含

并且配置包含

我的应用程序有这条线

和我的会话表迁移

我有这个文件

一切正常,我能够成功登录并获取令牌,但监护人数据库无法将记录插入数据库。我这样登录

MyApp.Guardian.encode_and_sign(%{id: 1}, %{key: :value}, token_type: "cus")

我还打印了 after_encode_and_sign、resource 和正确声明 Guardian db 挂钩,但未将令牌详细信息插入数据库。这里可能有什么问题

0 投票
1 回答
1435 浏览

java - JSON提取作者监护人API

因此,我正在尝试从 Guardian 报纸 API 中提取 JSON。

基本上我什么都可以得到,除了作者很重要。

如何或什么是提取这个的不同方式。

非常感谢我对这一切都是新手,并且过去曾提出问题但无济于事,任何建议将不胜感激。

QueryUtils.Java

这是我从中提取的 JSON。 https://content.guardianapis.com/search?q=debate&tag=politics/politics&from-date=2014-01-01&api-key=test

这是数据提供者.. http://open-platform.theguardian.com/documentation/

0 投票
2 回答
1893 浏览

elixir - Plug.Conn.resp/3 中没有函数子句匹配

在使用 Guardian 验证针对 JWT 令牌的 GET 请求后,我尝试使用 JSON 进行响应。

我的测试:

我的控制器:

我的观点:

我的路由器:

测试的输出:

我认为问题在于 connstate: :unset导致函数子句匹配问题,但我不确定为什么会发生这种情况,因为我认为我的控制器和视图与教程匹配。有任何想法吗?

0 投票
1 回答
678 浏览

elixir - Controller testing with Guardian

I have authenticated routes within my application and now I'm getting to the point of controller testing these endpoints. But I first need to authorize my request before I can test the API endpoint. Here is my test:

When I try to run that test I get this error:

ROUTER:

So I'm trying to hit the create path in my LeagueController. But I'm hitting the auth error because I don't have a jwt in the bearer header.

How do I generate a token and how to setup it up before the test? Thanks for the help.