问题标签 [warden]

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 回答
2859 浏览

ruby - 在设计登录时取消删除acts_as_paranoid 已删除用户

我有一个 Rails 3.1.3 应用程序,devise用于用户身份验证并使用acts_as_paranoid. 我希望在重新创建密码、用户注册和用户登录时取消删除这些帐户,因此如果他们提供已删除的电子邮件,我会获取该帐户,使其再次生效,然后继续执行操作(重新创建密码或登录)。

但是在Users::SessionsController#create操作中,在取消删除用户后,它会收到一个未经授权的错误(但用户现在应该是可见的)。代码是:

如果我resource.reload在取消删除后添加一个电话,它不会改变任何东西。如果我再次登录,用户会正常登录,因为它在上一次尝试中未被删除。

为什么会这样?如何在一次create通话中取消删除并登录?

0 投票
1 回答
169 浏览

ruby-on-rails - 在 Rails 3 日志中为 Warden 存储策略名称

我们正在使用 Warden 进行身份验证,并且我们有很多策略,很难追踪哪一个成功了。而是把线条像

Rails.logger.debug “通过 SSO 验证”如果用户

对于每个策略,我想在某处放置一个简单的行来记录策略消息。它在 Warden 的某个地方可用,因为它存储了成功的消息:

怎么做?放置这条线的最佳位置是什么?

我想我需要一个回调或类似的东西:

https://github.com/hassox/warden/wiki/Callbacks

0 投票
2 回答
3211 浏览

ruby - 在 Sinatra 中间件中访问会话

我正在处理一个 Sinatra 项目,并在会话中设置了一些变量以供以后使用。

我需要帮助的场景是我想访问中间件类中的会话对象。我正在使用守望者进行身份验证。

我想在中间件类中做类似的事情:

有没有可能这样做?

想法?

0 投票
2 回答
3416 浏览

ruby-on-rails - 对控制器测试进行 Stubbing Warden

我在测试控制器和使用 Warden 时遇到问题。

所有示例都指向 stubbing request.env['warden']。当我调用时,这会导致我的控制器出现问题env['warden'],然后返回nil

举个粗略的例子,使用这个:

还有一个简单的前置过滤器,如下所示:

我得到一个nil.

我只是设法让它使用controller.env['warden'] = ...它并且它有效。这是有道理的,因为它位于控制器级别,所以我想我的问题是在我看过的所有示例中它不起作用。

我有这个spec_helper

任何帮助都会很棒!

0 投票
1 回答
820 浏览

ruby-on-rails - 为什么设计和看守没有登录用户

这是我的用户会话控制器创建登录通过的操作

这条线

那怎么可能登录任何人...我不熟悉设计,我正在尝试登录,我知道数据库中有一个活动用户,但我无法登录并查看warden.authenticate行让我感到困惑,因为它不传递电子邮件和密码...任何帮助都可以帮助我了解身份验证中发生的情况

0 投票
4 回答
27389 浏览

ruby-on-rails - 如何使用设计登录用户?

我有我的 Rails 应用程序,但我遇到了设计的一个主要问题。我有一个控制器:

问题是它永远不会让用户登录,它总是停在这一行

我什至在实际的 gem 文件中放置了大量的记录器,看看我是否能看到任何东西,但什么也没有,我真的不知道如何解决这个问题。如果我将此行注释掉,则用户会登录,但如果电子邮件不在数据库中并且适用于任何密码(这绝对不是正确的解决方案),则会失败

我该如何解决?

更新

这可行,但看起来很hackish

0 投票
2 回答
9840 浏览

ruby-on-rails - 未捕获的投掷:设计测试中的守望者

我刚刚开始测试设计。我无法理解为什么我会收到此错误::

这是我规范中的代码::

有没有人解决这个问题?我知道有问题,github但在他们的情况下include Devise::TestHelpers不像我的情况那样存在。

我在这一行遇到错误::subject.current_user.should_not be_nil

0 投票
1 回答
555 浏览

ruby-on-rails - Rails 3 Devise Warden Login 需要堵塞的安全漏洞,把我的头发拉出来

我的登录功能有问题。

  1. 当用户单击注销链接时,一切正常,会话被破坏,用户可以以其他用户身份登录。
  2. 如果当前登录的用户关闭浏览器并返回登录页面,或者如果用户只是按下登录页面的后退按钮并尝试以其他用户身份登录,则用户将被定向到之前登录的用户到该特定浏览器上的应用程序。
    这不是想要的功能。我想让用户能够登录到他们想要的任何帐户,无论用户是返回登录页面,还是关闭窗口并返回登录页面。

    我尝试了 6 种不同的解决方案,但都没有奏效。似乎无论我对代码进行什么更改,登录功能总是从 session[:warden.user.person.key] 哈希中提取用户 ID 并使用它来登录,无论登录文本字段中输入了什么。我试图控制这个过程,但每次尝试都失败了。

    我的想法已经用完了,需要一些帮助,因为这被认为是我们系统中的一个安全漏洞。
    请让我知道您还想看到什么代码。我给你会话控制器代码和我的路由。

路线

0 投票
1 回答
610 浏览

ruby-on-rails - assert_routing 绕过warden/devise 设置

在我的(Rails 3.2)Test::Unit 控制器/功能测试中,assert_routing 失败并出现以下错误:

与路线:

我在控制器测试中设置了 Devise 2.0 身份验证:

这个答案Stubbing Warden on Controller Tests表明机架可能在我的应用程序运行之前进行身份验证。这很奇怪,因为我的控制器测试正在运行并且应该已经设置了 env 变量。但是在调用authenticate时,request.env["warden"]是nil。

是这样吗,那个机架在 Devise 助手设置环境变量之前运行?如果是这样,我如何在机架检查我的路由文件之前设置身份验证?我的其他断言通过了,但 assert_routing 似乎是一个特例。

编辑:

我验证了我的设置在调用#authenticate 之前正在运行,并且Devise 确实在用一个Warden::Proxy对象初始化request.env['warden'],但是当调用#authenticate 时,`request.env['warden'] 为零。这是否意味着机架在单独的线程中运行或其他东西。如此混乱,我确定我做错了什么。-_-

0 投票
1 回答
357 浏览

ruby-on-rails - 升级到 Rails 3.2.2 和 Devise 2.0.4 后,注销不会破坏会话

将我的 rails 项目升级到 rails 3.2.2 和 Devise 2.0.4 后,我无法再注销。我没有遇到这个问题;相反,单击注销不会正确地让我处于注销状态,用户对象仍然有效并且仍然存在 current_user。这是我的日志中的内容:

因此,它的路由正确。我试图重新安装设计,但没有成功。

在我尝试调试时,我插入了以下行:

进入我的模板。我发现如下:

Session_id 和 _csrf_token 在每次尝试注销后都会改变,但warden.user.user.key 不会改变。(请注意,我已经删除了每个字符串的前 10 个字符)。

谁能解释这种行为?

谢谢!