【问题标题】:Always getting 401 Unauthorized with new install of Rails + Devise新安装 Rails + Devise 总是得到 401 Unauthorized
【发布时间】:2012-12-09 22:34:18
【问题描述】:

我有一个新安装的 Rails,并正在尝试使用 Devise 设置身份验证。据我所知,我有一个非常基本的设置应该可以工作,但是每当我尝试使用默认的 Devise 登录表单登录时,我都会收到未经授权的错误。我确信我的凭据是正确的,因为我在控制台中创建了一个要测试的用户,如下所示:

User.new({:email=>'mark@markdavies.com.au', :priv_level => 'admin', :password=>'mypassword', :password_confirmation=>'mypassword'}).save

我的用户模型:

class User < ActiveRecord::Base

  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable, :confirmable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :priv_level, :unconfirmed_email
  # attr_accessible :title, :body

  has_one :supplier

end

我的日志:

Started POST "/admin/user/sign_in" for 127.0.0.1 at 2012-12-22 13:10:56 -0500
Processing by Admin::SessionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"wYLsalxN9rTv8P8bvYuT0wZcvlFbu6b1SvoCyKtTCII=", "admin_user"=>{"email"=>"mark@markdavies.com.au", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"}
User Load (0.2ms)  SELECT "users".* FROM "users" WHERE "users"."email" = 'mark@markdavies.com.au' LIMIT 1
(0.1ms)  begin transaction
(0.0ms)  commit transaction
Completed 401 Unauthorized in 69ms

有什么方法可以让我获得更多关于 Devise 失败的信息吗?当我在控制台中创建用户时,使用的加密与通过表单使用的加密不同吗?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 devise


    【解决方案1】:

    好吧,这个小小的挫折练习被证明是 RTFM 的一个很好的教训。我已经设置了可确认的设计,当我创建布局时,我忽略了插入以下行:

    <p class="notice"><%= notice %></p>
    <p class="alert"><%= alert %></p>
    

    ...正如它在入门指南中明确指出的那样。当我插入这些时,我收到错误消息“您需要在登录前确认您的电子邮件地址。”

    在控制台中,我为用户设置了 confirm_at = Time.now,瞧,我现在可以登录了。

    【讨论】:

    • 尝试@user.skip_confirmation! 为某些您不会让他/她收到确认电子邮件的用户。
    【解决方案2】:

    在我的情况下,它是由这个引起的

    之前(401 失败)

    resources :users devise_for :users

    之后(成功)

    devise_for :users resources :users

    所以,尝试在 routes.rb 中做出正确的顺序

    【讨论】:

    • devise_forroot to 路径排序进行测试,但这并不重要。
    • @AndresEhrenpreis 给我发送你的 routes.rb
    猜你喜欢
    • 2019-06-07
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 2020-04-29
    • 2017-05-14
    • 1970-01-01
    • 2020-02-09
    相关资源
    最近更新 更多