Asw*_*nan 5 ruby ruby-on-rails devise ruby-on-rails-4
我刚刚开始使用Rails4。我已经devise设置了自定义字段。注册后可以登录,但是无法从登录页面登录。用户注册进行得很好,并且数据库表中有username,password等等。
有人可以告诉我我所缺少的吗?我的用户模型非常基础。这是它的样子-
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
Run Code Online (Sandbox Code Playgroud)
我已经检查了视图,并传递了正确的参数。
我的应用程序控制器中有以下内容-
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
Run Code Online (Sandbox Code Playgroud)
我检查了数据库表,并且确实有usernameand password(即encrypted_password)。我的身份验证密钥设置为username。
不知道我在这里想念的是什么。我有devise 3.0.0
在您的应用程序控制器中,您允许使用sign_up 参数,但不允许使用sign_in 参数。所以我将configure_permitted_parameters方法更改为此,它应该可以工作:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1294 次 |
| 最近记录: |