gem 'devise'
2: 执行bundle install 之后 将devise添加到项目中去
rails g devise:instal
会创建以下文件:
config/initializers/devise.rb
config/locales/devise.en.yml
3: 需要设置邮件默认URL选项在开发环境下config/environments/development.rb
config.action_mailer.default_url_options= { host: 'localhost', port: 3000 }
4 : 创建devise model 命令:rails g devise user(或者其他你想使用的model名)
create db/migrate/xxxxxxxxx_create_devise_users.rb
insert app/models/user.rb(之前存在所以insert)
route devise_for :users (添加一行devise_for :users)
5 : 如果需要向users(model表)是否还需要其他额外添加字段,修改migration文件
6:在user控制器中添加before_action :authenticate_user! ,devise还有其他helpers方法:
源码文件位置(lib/devise/controllers/helpers.rb)
authenticate_user! user_sign_in?(是否登录) current_user(当前登录的用户) user_session(session中存入的用户) helper方法
如果你是用的是其他model将_user改为 _model名
7 : 用户登录或者修改密码完成后会redirect_to root_path ,所以需要定义 根路径 比如:
root 'home#index'
8: 在devise model (user)中添加
devise :database_authenticatable, :registerable, :recoverable, :rememberable,
:trackable, :validatable, :lockable, :authentication_keys => [:login]
authentication_keys => [:login] 可自定义登录属性,默认是email
注:【Others available are =>:database_authenticatable, :registerable,:recoverable, :rememberable, :trackable, :validatable, :lockable
:confirmable, :lockable, :timeoutable and :omniauthable】
9: rails g devise:views
10: 如果操作完成后需要对跳转路径进行设置(默认跳转到root_path)
# after sign in path
def after_sign_out_path_for(scope)
stores_path
end
# after sign in path
def after_sign_in_path_for(scope)
root_path
end
11: config/initailize/devise.rb 中 config.scoped_views = true
默认情况下会访问devise/sessions/new.html.erb 设置上面信息之后会访问users/sessions/new.html.erb
其它类似文章: http://blog.51cto.com/kinda22/1587991