用户认证是一个整体的模块,如何快速集成devise,能极高的提高我们的程序开发速度。
- Gemfile
gem "devise", '2.1.0'
- bundle install
-
rails generate devise:install
- 安装提示,写入相应的代码
-
rails generate devise user
rake db:migrate
需要设置rails generate devise:views users
才行config.scoped_views = true
- 增加国际化 devise.zh.yml
zh: errors: messages: not_found: "没有找到" already_confirmed: "已经确认" not_locked: "没有锁定" devise: failure: unauthenticated: '继续操作前请注册或者登录.' unconfirmed: '请先激活您的帐号' locked: '您的帐号已被锁定.' invalid: '手机号或密码错误' invalid_token: '认证码无效.' timeout: '您已登录超时,请重新登录.' inactive: '您还没有激活帐户.' already_authenticated: "您已经登录了." sessions: signed_in: '登录成功.' signed_out: '退出成功.' passwords: send_instructions: '几分后,您将收到重置密码的电子邮件.' updated: '您的密码已修改成功,请重新登录.' confirmations: send_instructions: '几分后,您将收到帐号激活的电子邮件.' confirmed: '您的帐号已经激活,请登录.' registrations: signed_up: '您的帐号已注册成功.' updated: '帐号资料更新成功.' destroyed: '再见!您的帐户已成功注销。我们希望很快可以再见到您.' unlocks: send_instructions: '几分后,您将收到一封帐号解锁的邮件.' unlocked: '您的帐号已成功解锁,请登录.' mailer: confirmation_instructions: subject: '确认信息' reset_password_instructions: subject: '重置密码信息' unlock_instructions: subject: '解锁信息'
- 如何改变默认的devise 登录成功后的跳转页面?
class ApplicationController < ActionController::Base private # 注销成功后 def after_sign_out_path_for(resource_or_scope) root_path end end
登录成功后
def after_sign_in_path_for(resource_or_scope) categories_path end
- 补充
定制controller
rails g controller users::sessions devise_for :users, :controllers => { :sessions => "users/sessions" }
- 常用
before_filter :authenticate_user! user_signed_in? current_user user_session
如何定制devise的route? 比如我们想去掉devise的注册功能。
有两个办法:
1, 在action 层停止,覆写对应的action
2, 定制routes.rb 可以参考如下的代码
devise_for :users, :controllers => { :sessions => "users/sessions" }, :path_names => { :sign_in => 'login', :sign_out => 'logout'}, :skip => [:registrations, :passwords]