Devise是一套使用者认证(Authentication)套件,是Rails社群中最广为使用的一套。
Usage
在gemfile中加入
1
gem 'devise'
在终端输入
1
2
$ bunlde install
$ rails generate devise:install
- 注:确保登陆能正常跳转。在config/route.rb中加入root地址
在layouts加入提示信息
1
2
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
生成views页面文件
1
$ rails g devise:views
生成使用devise的model
1
2
$ rails g devise user
$ rails db:migrate
定义多个authentication_keys
在model加入以下代码
1
2
3
4
5
6
7
8
9
10
attr_accessor :signin
def self.find_for_database_authentication(warden_conditions)
conditions = warden_conditions.dup
if signin = conditions.delete(:signin)
where(conditions.to_h).where(["lower(username) = :value OR lower(mobile) = :value", { :value => signin.downcase }]).first
elsif conditions.has_key?(:username)|| conditions.has_key?(:mobile)
where(conditions.to_h).first
end
end
在application_controller.rb中加入
1
2
3
4
5
6
7
before_action :configure_permitted_parametersod_name, if: :devise_controller?
def configure_permitted_parametersod_name
devise_parameter_sanitizer.permit(:sign_in) {|u| u.permit(:signin,:username, :mobile, :password, :remember_me)}
devise_parameter_sanitizer.permit(:sign_up) {|u|
u.permit(:signin,:username, :mobile, :password, :password_confirmation)}
end
最后更改initialize/devise.rb
1
config.authentication_keys = [:signin]