5-15 devise

https://github.com/plataformatec/devise#getting-started

devise使用介绍:


安装:

  1. gem 'devise'
  2. rails generate devise:install   #这步骤后可以设置默认url
  3. rails generate devise [MODEL]   #一般用user或 member,生成model.
  4. 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。

  1.  所需做的是在config/initializers/devise.rb中 config.scoped_views = true
  2.  然后就可以使用视图基于users/sessions/new和admins/sessions/new.
另外,也可以用生成器生成单独的views:

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, 


单元测试和集成测试 。。等未细看。

猜你喜欢

转载自www.cnblogs.com/chentianwei/p/9034940.html