Devise - Rails 4 - 无法登录 [英] Devise - Rails 4 - Not able to login

查看:128
本文介绍了Devise - Rails 4 - 无法登录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚开始使用Rails 4.我得到了 devise 设置与自定义字段。我可以在注册后登录,但我无法从登录页面登录。用户注册正常,我在数据库表中有 username password 等。



有人可以告诉我我失踪了吗?我的用户模型非常基本。
这是它的样子 -

  class User< ActiveRecord :: Base 
#包含默认设计模块。其他可用的是:
#:token_authenticatable,:confirmable,
#:lockable,:timeoutable and:omniauthable
devise:database_authenticatable,:registerable,
:recoverable,,rememberable,可追踪,可验证

验证:用户名,唯一性=> true,:presence => {:message => ' - 用户名不能为空'}
验证:first_name,:presence => {:message => - 名字不能为空!

private
def user_params
params.require()。permit(:first_name,:last_name,:username,:email,:password ,:password_confirmation)
end
end

我检查过我的视图我传递正确的参数。



我的应用程序控制器中有以下内容 -

  class ApplicationController < ActionController :: Base 
#通过引发异常来防止CSRF攻击。
#对于API,您可能需要使用:null_session。
protect_from_forgery with::exception

layout:layout_by_resource

before_filter:configure_permitted_pa​​rams,if::devise_controller?

def layout_by_resource
如果devise_controller?
devise
else
应用程序
结束
结束

保护

def configure_permitted_pa​​rams
devise_parameter_sanitizer.for(:sign_up){| u | u.permit(:username,:first_name,:last_name,:password,:password_confirmation,:email)}
end

end
pre>

我检查了数据库表,我确实有用户名密码(encrypted_pa​​ssword即是)。我的身份验证密钥设置为用户名



不知道我在这里缺少什么。我有 devise 3.0.0

解决方案

在你的应用程序控制器中你有允许的参数为sign_up,但不是sign_in。所以我将 configure_permitted_pa​​rameters 方法更改为此,它应该可以工作:

  def configure_permitted_pa​​rameters 
devise_parameter_sanitizer.for(:sign_in){| u | u.permit(:username,:password,:remember_me)}
devise_parameter_sanitizer.for(:sign_up){| u | u.permit(:username,:first_name,:last_name,:password,:password_confirmation,:email)}
end


I just started using Rails 4. I got devise setup with custom fields. I'm able to login after I register, but I'm not able to login from the login page. The user registration goes in fine, and I have username, password etc in the database table.

Can somebody tell me what I'm missing? My User model is very basic. Here is how it looks like -

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  validates :username, :uniqueness => true, :presence => {:message => '- Username cannot be blank'}
  validates :first_name, :presence => { :message => " - Firstname cannot be blank!"}    

  private
    def user_params
        params.require().permit(:first_name, :last_name, :username, :email, :password, :password_confirmation)
    end
end

I've checked my view and I'm passing the right parameters.

I have the following in my application controller -

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  layout :layout_by_resource

  before_filter :configure_permitted_params, if: :devise_controller?

  def layout_by_resource
    if devise_controller?
        "devise"
    else
        "application"       
    end
  end

  protected

  def configure_permitted_params
    devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:username, :first_name, :last_name, :password, :password_confirmation, :email) }
  end

end

I checked the database table and I do have username and password (encrypted_password that is). I have my authentication keys set to username.

Not sure what I'm missing here. I have devise 3.0.0

解决方案

In your application controller you have permitted params for sign_up, but not for sign_in. So i you change the configure_permitted_parameters method to this, it should work:

def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:username, :password, :remember_me) }
    devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:username, :first_name, :last_name, :password, :password_confirmation, :email) }
  end

这篇关于Devise - Rails 4 - 无法登录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆