You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重写Devise的create方法时持续出现401错误

排查Devise Token Auth创建会话时的401错误
  • 检查请求参数格式
    Devise Token Auth要求登录请求参数必须嵌套在user对象内,示例请求体:

    {
      "user": {
        "email": "your_email@example.com",
        "password": "your_password"
      }
    }
    

    参数未嵌套是触发401的常见原因。

  • 修正自定义控制器的继承父类
    你的CustomSessionsController继承了Devise::SessionsController,但Devise Token Auth的会话控制器需继承DeviseTokenAuth::SessionsController,修改后代码:

    class CustomSessionsController < DeviseTokenAuth::SessionsController
      def create
        binding.pry
        super
      end
    
      def destroy
      end
    end
    

    父类错误会导致Token Auth核心逻辑未加载,直接引发认证失败。

  • 验证用户模型的模块引入
    确保User模型包含DeviseTokenAuth::Concerns::User模块,示例代码:

    class User < ApplicationRecord
      devise :database_authenticatable, :registerable,
             :recoverable, :rememberable, :validatable
      include DeviseTokenAuth::Concerns::User
    end
    

    缺少该模块会导致Token Auth的认证机制无法生效。

  • 确认请求头设置
    发送请求时必须携带Content-Type: application/json头,表单格式的请求会被Devise Token Auth拒绝解析,进而触发401。

  • 查看服务器日志定位具体原因
    查看log/development.log中的请求日志,日志会明确标注401的触发原因,比如参数错误、用户不存在、密码不匹配或中间件配置问题,是快速定位问题的关键。

内容的提问来源于stack exchange,提问作者Jay Enginer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 17:02:14