当前位置: 首页 > 工具软件 > Devise > 使用案例 >

rails gem 开发之 devise的快速开发

武卓
2023-12-01

用户认证是一个整体的模块,如何快速集成devise,能极高的提高我们的程序开发速度。


  1.  Gemfile
    gem "devise", '2.1.0'
    

  2. bundle install
  3. rails generate devise:install

  4. 安装提示,写入相应的代码
  5. rails generate devise  user
    

  6. rake db:migrate

  7. rails generate devise:views users
    需要设置
    config.scoped_views = true
    才行

  8. 增加国际化 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: '解锁信息'
  9. 如何改变默认的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  



  10. 补充
    定制controller

    rails g controller users::sessions 
    
      devise_for :users, :controllers => { :sessions => "users/sessions" }




  11. 常用
    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]








 类似资料: