问题标签 [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.
elixir - Guardian DB 初始设置(MyApp.Repo.insert/1 未定义)
我正在尝试将 Guardian 0.14 和 Guardian_db 0.8 与 elixir/phoenix 一起使用。但是,我一直在挂钩中遇到以下错误:
我的代码如下:
配置
挂钩
为什么它不使用我在配置中传递给它的 repo?
另外,我在里面放了一个撬子,然后跑了GuardianDb.repo
,它又回来了MyApp.Repo
。就像它没有采用我的回购配置一样。
cookies - 使用 Guardian 在 Phoenix 中记住我的功能
我正在为使用 Guardian 处理身份验证的 Web 应用程序开发登录系统。在我的 Guardian 配置中,我有
通过调用将用户的令牌存储在 cookie 中:
像这样,令牌有效期为 30 天,即使浏览器关闭(cookie 的预期行为)也会保留在那里。但是,用户应该能够选择在登录期间是否被记住。如果没有,则必须在关闭浏览器窗口时从 cookie 中删除令牌。我试过设置
它似乎完成了所需的行为。说:
- ttl: {0, :days} 是在浏览器窗口关闭之前对用户进行身份验证的正确方法吗?如果是这样,如何在 Guardian.Plug.sign_in(conn, user) 被调用之前以编程方式更改管道中的 ttl 值?
- Guardian 是否能够根据用户选择将令牌存储在 cookie 或会话存储中?(选定的 cookie 记住我,如果没有,则会话存储)
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"}
似乎很新,文档很糟糕。
elixir - 使用 Guardian 1 和 Phoenix 1.3 验证 id
我使用 Guardian 1 和 Phoenix 1.3。我正在尝试制作一个使用 JWT 的 API。我现在对路由进行身份验证。例如,如果get api/users/
标头中没有有效的令牌,您将无法访问。
我有一个看起来像这样的管道:
我想要实现的是,如果用户在令牌资源中put api/users/1
有对应的,则调用的用户只能访问该路由。:id
我知道我可以通过调用来获取资源
但是我该怎么做呢?制作另一个管道?
看起来怎么样,我找不到任何关于实现这一目标的文档?
我对 Elixir 和 Phoenix 还很陌生,这是我打算发布的第一个项目。
elixir - 即使 current_user 为 nil,Guardian 也让用户访问控制器?
如果用户发送了一个未过期的令牌,但该特定用户已不存在,Guardian
仍然让用户访问控制器。
我已经添加{:ok, nil}
了current_user.ex
它,它只是杀死了我认为不是正确方法的连接,因为我需要像错误一样向用户返回一些东西。我不确定我应该在那里使用什么?
这是我的路由器:
这是我的current_user
先感谢您。
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: (测试)
configuration - Guardian db未将记录插入数据库
我的混合文件包含
并且配置包含
我的应用程序有这条线
和我的会话表迁移
我有这个文件
一切正常,我能够成功登录并获取令牌,但监护人数据库无法将记录插入数据库。我这样登录
MyApp.Guardian.encode_and_sign(%{id: 1}, %{key: :value}, token_type: "cus")
我还打印了 after_encode_and_sign、resource 和正确声明 Guardian db 挂钩,但未将令牌详细信息插入数据库。这里可能有什么问题
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/
elixir - Plug.Conn.resp/3 中没有函数子句匹配
在使用 Guardian 验证针对 JWT 令牌的 GET 请求后,我尝试使用 JSON 进行响应。
我的测试:
我的控制器:
我的观点:
我的路由器:
测试的输出:
我认为问题在于 connstate: :unset
导致函数子句匹配问题,但我不确定为什么会发生这种情况,因为我认为我的控制器和视图与教程匹配。有任何想法吗?
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.