问题标签 [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-3 - Sinatra Warden 与使用 Devise 的现有 Ruby on Rails 应用程序
我正在尝试拆分我当前的 Ruby on Rails 3 Web 应用程序和它的 Web 服务 (API)。我的 web 应用程序在 Heroku 上运行,并将 API 实现为我的应用程序中的命名空间路由。例如/events
返回一个 HTML 页面并/api/v1/events
返回一个 JSON 数据。
根据一些最佳实践,我想将它们分成两个不同的应用程序。我选择了 Sinatra 来实现 API 应用程序。它现在适用于不需要身份验证的简单请求。
我的 Ruby on Rails 3 应用程序正在使用 Devise 对用户进行身份验证。还可以使用 Facebook 帐户登录。现在我想要实现的是通过我的基于 Sinatra 的 API 使用 Warden 对用户进行 HTTP 基本身份验证(包括注册)。
最好的方法是什么?或者也许我可以使用与 Warden 不同的东西?
请记住,我对 Rack 不是很熟悉 :)
ruby-on-rails - Rails 3 - 在登录后设计重定向到表单
在博客应用程序中,我希望每个用户都可以访问表单来发表评论。
当用户提交评论表单时,如果未登录,他将被重定向到 Devise sign_in 表单。
一旦用户登录,我怎么能将他重定向到评论表单并填写所有字段?
提前致谢
ruby-on-rails - 设计在 XHR 上抛出 HTTP 身份验证并注销
我在使用 OmniAuth 对我的 Rails 应用程序进行身份验证时遇到了很多问题。我重新启动服务器并在隐身模式下打开一个新选项卡(以便清除 cookie)并加载我的应用程序。我登录,然后进入应用程序。
当我进入一个通过 AJAX 调用经过身份验证的操作的页面时,它会通过 HTTP 基本身份验证请求用户名和密码。我在我的devise.rb中禁用了这个。
然后当我返回上一个页面时,它会将我重定向到登录页面并要求登录。当我访问不需要身份验证的页面然后返回经过身份验证的页面时,也会发生这种情况。
这令人非常沮丧。我已将 Devise 和 Warden 解压到我的vendor/gems目录,以便尝试调试它,但老实说,我不知道从哪里开始。任何帮助将不胜感激。
ruby-on-rails-3 - 设计:让多个控制器处理用户会话
我正在运行带有 rails 3.0.7 的设计 1.3.4。我有两种用户可以登录的方式:使用网络应用程序和使用移动网络应用程序(通过 JSON API 调用)。第一种方法由默认设计会话控制器完美处理。身份验证的 API 调用方法需要位于扩展我的Api::BaseController
. 所以,我这样写了第二个控制器:
由于. valid_controller?
_ Devise::Strategies::Authenticatable
因为我已将默认控制器 ( devise/sessions
) 作为用户的映射控制器,所以它不允许来自我的自定义控制器的身份验证。
我想将我的自定义功能滚动到我自己的子类中Devise::SessionsController
,但是我需要API 会话控制器来扩展API::BaseController
,所以我也不能扩展Devise::SessionsController
。我不想将工作的、默认行为的 web 应用程序身份验证方法放在 API 控制器中,特别是因为这需要从设计控制器中复制它们。
有什么建议么?我是否缺少一些允许多个控制器处理会话的配置?该valid_controller?
方法进行==
比较,而不是.include?
,所以我看不出它是如何工作的。
更新
这是一个糟糕的临时解决方法。我不喜欢它,所以我不会将其发布为答案,但我认为它可能会为所有回答者类型提供思考:
在我的 create 方法的顶部,我可以覆盖 Devise 期望的会话控制器。
这是围绕设计的预期功能(需要一个特定的控制器来创建会话),所以我不想保留它。我想知道这个约束是一种安全措施还是只是一种约定——如果是为了安全,这可能是相当糟糕的。
ruby - 在 Sinatra 测试响应中访问warden 登录信息
标题中几乎说明了我要查找的所有内容-我需要在测试中访问warden 用户变量以检查身份验证是否有效。我也可以使用另一种方法,只是尝试很好地测试身份验证:)
ruby-on-rails - 设计和认证
我整天都在尝试通过简单的获取进行身份验证。
当我用类似http://localhost:3000/api/signin?email=theemailaddress&password=thepassword
我收到消息:“无效策略电子邮件地址”,这是堆栈:
我需要什么才能让这样的事情发生?
ruby-on-rails - 从监狱长或设计处获取会话 ID
我需要获取用户的会话 ID 并最好在模型中使用它。
这是要点:
1) 我有一份提案清单。2) 未注册用户可以创建提案,并且他们的会话 id 被保存给他们。3) 当用户注册或登录时,他们的 session id 应该与提案匹配。4)然后他们的用户ID也应该保存到提案中。
我曾考虑过覆盖 Devise 控制器或在 rails 应用程序文件中使用 Warden 挂钩,但这些解决方案似乎很混乱。
ruby-on-rails - 在不创建设计用户的情况下验证自定义策略
我的设置:Rails 3.0.9、Ruby 1.9.2、Devise 1.3.4、Warden 1.0.4
我试图弄清楚是否可以对自定义策略进行身份验证,而不必在成功身份验证后在此过程中创建设计用户。在我的 config.warden 块中,身份验证工作正常,但如果我不创建设计用户,我将不会通过身份验证。我的理想方案要求我成功地通过第 3 方提供商的身份验证并登录我的应用程序(使用没有相应的 Devise 用户记录的 Devise),或者如果我未能通过身份验证,则尝试使用 Devise 标准登录路径。
这是我开始工作的 devise.rb 代码片段,但我必须创建一个设计用户才能进行身份验证,这是我希望避免的事情
ruby-on-rails - 在命名空间内设计路由助手 -warden.authenticate 的问题!
我在通过 API 登录到我的应用程序时遇到问题。我想通过 POST /api/v1/users/sign_in 对用户进行身份验证,如果带密码的电子邮件有效,则返回此用户的对象。
路线.rb
控制器/api/v1/sessions_controller.rb
问题是用户从未经过身份验证。它甚至没有从数据库中选择。这是我的本地服务器日志:
我已经尝试使用:scope => :api_v1_user
然后提供 POST 数据user_v1_api
,但这并没有帮助。服务器日志看起来与上面的完全一样。
电子邮件和密码绝对正确,因为当我将路径更改/api/vi/users/sign_in
为/users/sign_in
一切正常并且我已登录时。
ruby-on-rails-3 - 会话被销毁时可以通知我的应用程序吗?如果是这样,怎么做?
我的基于 Devise/Warden 的应用程序将模型 ID 存储在 session[] 变量中。我想在 session[] 被销毁时销毁对象。
- 当会话被销毁时,是否有回调或某种机制来通知我的应用程序?
- 该机制是否可靠,或者我应该运行一个夜间清理脚本来清理任何孤立的对象?
为了清楚起见,这是我的控制器代码的片段:
重申问题:我应该如何以及何时销毁 Wizard 对象?