设计忽略我的自定义策略

2024-06-06

我想创建一个用于访问 API 的自定义身份验证策略。我按照示例代码进行操作设计忽略自定义策略 https://stackoverflow.com/questions/3503827/devise-ignoring-custom-strategy.

问题是有效吗?我的 Api 策略中的方法永远不会运行(基于试图窥探它)。

My code:

module Devise
  module Strategies
    class Api < Devise::Strategies::Base
      def valid?
        binding.pry
        params[:request_source] == 'api'
      end

      def authenticate!
        #do stuff here

        if user
          success!(user)
        else
          warden.custom_failure!
          render :json=> {:success=>false, :message=>"Error with your login or password"}, :status=>401
        end
      end
    end

    Warden::Strategies.add(:api, Devise::Strategies::Api)

  end
end

并在设备初始化程序中:

config.warden do |manager|
  manager.default_strategies.unshift :api
end

无论我做什么,Devise 似乎总是使用其默认策略。 AFAIK,这应该足够了......

- - - -编辑 - - - -

我需要在我的设计初始值设定项的最顶部采用这样的策略:

require Rails.root.join('app/devise/strategies/api')

我知道该策略是在启动时加载的,因为如果我在类中放置一个 pry 调用,它将启动一个 pry 会话。但方法内的 Pry 调用永远不会运行。 :-S


找到答案了!

我不得不使用这个:

config.warden do |manager|
  manager.default_strategies(scope: :user).unshift :api
end

使其发挥作用。奇怪的是,我在网上看到的很多示例代码都没有使用它:-S

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设计忽略我的自定义策略 的相关文章

随机推荐

  • 有条件地将字符串转换为特定数值

    我确信对此有一个简单的答案 但我已经扫描了堆栈溢出 但无法找到解决方案 似乎 sapply 和 ifelse 函数的组合可能可以完成这项工作 但我不确定 所以我有一个包含字符的数据框 除了一列是数值 Create dataframe whi
  • 无法打开备份设备。操作系统错误5

    下面是我用来备份的查询 创建一个 bak 我的数据库 但是 每当我运行它时 我总是收到此错误消息 消息 3201 16 级 状态 1 第 1 行无法打开备份设备 C Users Me Desktop Backup MyDB Bak 操作系统
  • 如何创建浏览器插件?

    我必须创建一个插件 当用户将鼠标悬停在某些术语上时 该插件必须显示信息 谁能告诉我如何做的方向 我对创建插件没有太多想法 我知道我想要做的事情可以通过java脚本来完成 但是java脚本文件可以作为浏览器插件安装吗 任何对此的想法将不胜感激
  • 如何在 Python 中解析损坏的 XML?

    我无法影响的服务器发送的 XML 非常损坏 具体来说 Unicode WHITE STAR 将被编码为 UTF 8 E2 98 86 然后使用 Latin 1 转换为 HTML 实体表 我得到的是 acirc 98 86 9 个字节 位于声
  • g++4.9 不支持 std::align

    在学习对齐问题等时 我意识到我的 g 4 9 macports OS X 实现不支持std align 如果我尝试编译 使用 std c 11 此示例代码来自http www cplusplus com reference memory a
  • Synapse Notebook 参考 - 使用参数从另一个笔记本调用 Synapse Notebook

    我有一个带有参数的突触笔记本 我试图从另一个笔记本调用该笔记本 我正在使用 run 命令 我应该如何将参数从基本笔记本传递到正在调用的笔记本 另外 对我来说 上述答案不起作用 作为对此问题的单独解决方案 下面是一个答案 打开笔记本并转到最右
  • 将从数据透视表包生成的数据透视表转换为数据帧

    我正在尝试制作一个数据透视表pivottabler包裹 我想将数据透视表对象转换为数据框 以便我可以将其转换为数据表 带有 DT 并在 Shiny 应用程序中渲染它 以便可以下载 library pivottabler pt qpvt mt
  • 如何在 VB6 中读取子进程的标准输出?

    在VB6中创建进程时 涉及this https stackoverflow com questions 570295 can i spawn a synchronous process in vb6 and retrieve its ret
  • 升级后 pip 损坏

    我做了 pip install U easyinstall 然后 pip install U pip 来升级我的 pip 但是 当我尝试使用 pip 时 我现在收到此错误 root d8fb98fc3a66 which pip usr lo
  • 为什么 Google Cloud Platform App Engine 上的“上次修改时间”不正确?

    我在 Google Cloud Platform App Engine 上多次部署了我的网络 使用设置如下 app yaml runtime nodejs10 当我在本地主机上测试它时 一切都工作正常 但是当我将它部署到谷歌云平台时 响应头
  • AngularJS $watch 根范围变量的更改

    我有以下 rootScope 变量 用于保存当前登录的用户权限级别 然后从其他控制器访问该变量 有没有办法可以观察 rootScope 变量的更改 以便通过对根范围变量的任何更改来更新控制器特定变量 下面是我到目前为止使用的代码 有人可以告
  • 如何在OpenGL中像这样绘制连接的带状线

    我想用以下方式绘制一系列连接线 GL LINE STRIP 我尝试过自己编写代码 但没有得到想要的结果 所以我来到这里 帮助我找出我错在哪里 这里我只给出我的draw 函数 glBegin GL LINE STRIP glVertex2f
  • 保留选项卡视图页面之间的状态

    issue 我有两个ListViews渲染内部TabBarView用一个TabController 我如何在每个之间保留状态 由于缺乏更好的词 ListView这样 1 小部件不会重建 2 ListView选项卡之间的位置会被记住 相关代码
  • 是否可以从.NET Core中间件检索控制器的操作结果?

    public class UsersController APIControllerBase public UsersController public Client Get return new Client ClientID 1 Las
  • 如何在表单提交时运行 Appscript?

    我正在尝试创建当用户完成表单提交时重定向到网络应用程序的 Google 表单 我查过谷歌开发者文档 https developers google com apps script guides triggers 但我看不到一种简单的方法来做
  • 在 Jasmine 测试中配置 Angular 服务提供者

    我的服务有someModule module someModule provider someService function this options this get function return options 我正在编写规范 到目
  • 如何选中表格中输入文本焦点上的复选框

    我试图在输入文本焦点上检查表 DOM 中的复选框 但无法访问复选框元素 但我的焦点正在工作 这是我的 jsfiddle 链接https jsfiddle net 9qha9vft https jsfiddle net 9qha9vft 这是
  • 在 Gensim 中通过 ID 检索文档的字符串版本

    我正在使用 Gensim 进行一些主题建模 并且已经达到使用 LSI 和 tf idf 模型进行相似性查询的程度 我取回 ID 集和相似点 例如 299501 0 64505910873413086 如何获取与 ID 在本例中为 29950
  • 正则表达式基于组的不同替换?

    所以我对正则表达式比较陌生 并且做了一些练习 我正在玩一个简单的 混淆器 它只是寻找 dot or dot or at or at 不区分大小写 并且在匹配项之前或之后有或没有任意数量的空格 这是针对通常情况的 someemail AT d
  • 设计忽略我的自定义策略

    我想创建一个用于访问 API 的自定义身份验证策略 我按照示例代码进行操作设计忽略自定义策略 https stackoverflow com questions 3503827 devise ignoring custom strategy