问题标签 [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.
ruby-on-rails - 使用 rspec 测试自定义设计和/或看守策略
我看到很多导致设计和看守的自定义授权策略,但我特别关注的是使用 rspec 测试这些解决方案。与此问题类似:过滤能够使用 Devise 登录的用户
我能做些什么来测试这种实现。Rails 3.1.1、Devise(最新)等。
ruby - Ruby On Rails 身份验证与设计和(监狱长)回调
我有一个使用 Devise 的 Rails 应用程序,带有用户模型,没有范围。我还在应用程序中添加了 activeadmin gem,Active Admin 是用于在您的应用程序中添加管理仪表板的 gem。它使用 Devise 来登录用户并为管理员创建一个单独的 admin_user 模型。
我允许匿名、未登录的用户创建购物车,创建一个session[:cart_id]
. 如果用户登录我想将用户与购物车相关联,例如
我打算使用 Wardens callbacks wardens callbacks来暗示这一点,就像这样:
但是,如果我这样做,我会得到一个错误:
<% unless user_signed_in? %>
抛出错误:admin_user user is not logged in
有人知道发生了什么吗?
我看过相关的问题,但没有帮助:
ruby-on-rails-3.1 - 如何使用 Ruby on Rails 和 Devise Gem 重定向未经确认的用户
我想更改设计的用户登录行为,以便在未确认用户时将用户重定向到不同的页面。
我的代码中有以下代码app/controllers/sessions_controller.rb
:
当用户输入正确的用户名/密码并且未确认时,Warden 将引发错误,将用户重定向到登录页面(代码 302)。同时这会将 flash[:alert] 设置为“未确认”。
有没有办法将未经确认的用户重定向到特定页面?
我解决这个问题的想法是读取 flash[:alert] 值并在该值“未确认”时重定向到适当的页面,但看守没有发送有关用户的其他数据。
ruby-on-rails - rails 3warden NameError(未捕获的 throw `warden'):
它应该是这样工作的:我登录到管理面板,转到汽车/新车并填写字段,按创建,我的列表中应该有一辆新车。www.autozeep.com
问题是在我按下创建按钮创建新车之前一切正常,服务器日志显示:
在开发模式下这工作正常,在生产模式下的服务器上不是,它是相同的代码,没有任何改变。更多服务器日志: http: //pastie.org/3028350
用户控制器:http : //pastie.org/3028586
我可以编辑汽车,它工作正常,所以来自 cars_controller 的更新和编辑功能没问题,我检查了来自 cars_controller 的新功能和创建功能,但我没有任何能让我了解正在发生的事情的东西。Cars_controller: http ://pastie.org/3028452
请帮助,我已经运行了这个应用程序,客户端正在等待这个问题得到解决。非常感谢大家。
编辑
我只有在添加新车时才会收到此错误,我可以编辑汽车、新闻、联系人。除了汽车之外的一切。
问题解决了
这个问题是由一些 jquery 库引起的,我在这个表单中使用了 dynamic_form,所以当我在下一个 select_box 中选择汽车名称时,只会出现所选汽车的模型。检查问题(和我的老师一起,我自己不会想到)我们看到当我选择汽车时,日志中正在运行一个名为“dynamic_carmodels”的进程来更新汽车型号列表,此时会话密钥由另一个更改,通常如果更改会话密钥,我登录时开始的会话不再有效,这就是我收到“未经身份验证的错误”的原因。仍然不知道究竟是什么 jquery 导致了这个问题,但最后我解决了这个问题,这不是因为监狱长配置。
ruby-on-rails - 典狱长custom_failure
我使用设计进行 API 身份验证。我已经覆盖SessionController:create
了这样的方法:
如您所见,在使用 JSON 进行身份验证时,我会使用状态代码进行响应。当身份验证失败时,我收到以下响应:
如何更改此消息?我不知道在哪里覆盖这个warden.authenticate!
方法。
ruby-on-rails - 设计在更新的 Rails 3.1 应用程序上返回 401,并带有轻微的自定义路由
在将我们的应用程序从 Rails 2.3.x 升级到 Rails 3.1.3 后,我似乎无法让用户登录到我们的管理面板。我正在使用最新版本的 Devise,在本文发布时它是 v1.5.3。
A POST
to session#create
route 返回一个401
响应(并且所有参数看起来都正确进入);当 Warden 尝试使用 Devise 的一种策略 ( :database_authenticatable
) 对用户进行身份验证时,就会发生这种情况。这是我的用户模型。
Devise::SessionsController
我的命名空间中有一个覆盖:admin
(登录仅供管理员使用,他们有自己的站点布局,因此覆盖)。实际上,除了布局之外,控制器没有什么特别之处:
我确实有稍微定制的路线,这是我为此准备的代码。
我的csrf_meta_tag
布局的标题中有一点,我的里面ApplicationController
有protect_from_forgery
一行。当它返回重新呈现页面时,表单的错误是空的。
我已经逐步完成了代码(一直到lib/warden/proxy.rb
),Warden 似乎并不认为:database_authenticatable
我使用的策略是有效的(Warden's source code for that part)。该用户是一个有效用户……我通过 Rails rails console
IRB 会话从头开始创建它,并使用有效密码和所有内容。我希望它应该承认这是有效的,对吧?或者我什至在吠叫正确的树?
ruby-on-rails-3 - 将设计/管理员会话 ID 作为参数传递,而不是通过 cookie/会话
我正在开发一个 API,我想支持经过身份验证的用户会话。用户通过身份验证后是否可以传递设计/管理员使用的会话信息?我知道我可以使用 TokenAuthenticatable,但我认为会话 ID 更好,因为它会在一段时间后过期,可以在每个会话的基础上过期,而且我更希望有一个单独的不可过期的身份验证令牌。
我看到监狱长设置了这样的东西:
warden.user.user.key"=>["用户",[4975],"Ejm5RbQhYVnNYFU7wX2o"]
是否可以通过 GET 或 POST 参数以某种形式简单地引用它?这是可取的吗?
谢谢
ruby-on-rails - Devise: rememberable 表示 last_sign_in_at 不被 trackable 更新
我一直在使用 Devise,并依靠用户模型的 last_sign_in_at 来确定我的客户是否在 X 天内没有返回。但是,我最近发现 last_sign_in_at 仅在发生实际表单登录事件时才更新,而不是在用户自动登录时更新,因为包含了可记住的。
如果要确保每次用户登录(新的浏览器会话)时更新 last_sign_in_at,无论他们是使用表单登录还是由可记住的 cookie 自动登录,我将如何在设计兼容方式?
ruby-on-rails - Warden::Manager after_authentication 回调的问题
如果 Ruby 是我的第一语言,这对我来说可能会更简单,但无论如何,这是我的问题:
使用 Rails 3.1,我尝试使用 Devise 访问一些 Warden Manager 回调,以在每次用户登录时创建一个新的“购物车”。我将此逻辑放在我的 ApplicationController 中。问题是,当我创建一个购物车时,我想给它一个用户 ID。我一直在尝试使用 Devise 的辅助方法 current_user 但这不起作用。
最重要的是,我想知道为什么我不能从 Warden::Manager 块中访问我的辅助方法或 ApplicationController 中定义的方法。但我也想知道如何编辑我的代码,这样我就可以在块中使用 Devise 的 current_user 方法(以及我的 current_cart 方法,如下所示),而不会出现如下所示的错误。
这是我的代码:
这是错误: