devise使用介绍:
安装:
- gem 'devise'
- rails generate devise:install #这步骤后可以设置默认url
- rails generate devise [MODEL] #一般用user或 member,生成model.
- rails db:migrate后从新启动rails server.
Controller filters and helpers
Devise定义了一些helper方法用在controllers和views中。
* 建立一个controller并进行用户验证,需要加上:
before_action :authenticate_user!
⚠️, user是_yourmodelname
* 确定用户是否登陆
user_signed_in?
* 当前登陆用户
current_user
* use_session 能够存取session。
* 需要建立根路径 root , 因为Devise需要根路径redirect to
Configuring Models (有不少例子具体看操作手册。)
model中的Devise方法接受一些options来配置modules。
Configuring views
后期客制化views, views打包在gem中,需要复制。
rails generate devise:views
包括confirmations, mailer, passwords, registrations, sessions, shared, unlocks文件
因此可以选择生成部分视图:
rails generate devise:views -v registrations confirmations
如果Devise有多个,User and Admin, Devise会用相同的views,但我们可以客制化views。
- 所需做的是在config/initializers/devise.rb中 config.scoped_views = true
- 然后就可以使用视图基于users/sessions/new和admins/sessions/new.
rails generate devise:views users
Configuring controllers
如果客制化视图不够,还可以客制化controller
第一步: rails g devise:controllers [scope]
如果使用users作为scope,控制器创建app/controllers/users/.
另外;使用-c可以指定一个controller。(类似views -v)如:
rails generate devise:controllers users -c=sessions
总共6个控制器:confirmations_controller, omniauth_callbacks_controller, passwords_controller, registrations_controller, sessions_controller, unlocks_controller.
第二步:在router.rb中使用这个controller
devise_for :users, controllers: {sessions: 'users/sessions' }
第三步:复制视图,从devise/sessions到users/sessions. 因为controller变了,默认的视图也需要从新定位。
第四步:最终,改变或扩展想要的controller actions.
Configuring routes
Devise也支持客制化路径。可以通过devise_for方法,它接受一些options如class_name,
单元测试和集成测试 。。等未细看。