zoukankan      html  css  js  c++  java
  • rails5 后台入门(api mode)

    1. Installation (Centos为例)

    1.1安装rvm (http://rvm.io/)

    gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
    
    curl -sSL https://get.rvm.io | bash -s stable

    1.2安装ruby

    rvm install 2.5.3

    yum install ruby-dev

    1.3 安装rails 

    gem install rails

    2. Setup

    2.1 初始化项目

    rails new ProjectName --api  ( --skip-bundle ) 跳过bundle安装

    gemfile配置

    gem 'mysql2' # 如果是pg安装'pg'
    gem 'rack-cors'

    安装: bundle install 

    2.2 配置数据库

    /config/database.yml

    default: &default
      adapter: mysql2
      pool: 5
      username: root
      password: pwdpwdpwd
      host: localhost
      charset: utf8
      timeout: 5000
    
    development:
      <<: *default
      database: databaseName
    
    test:
      <<: *default
      database: databaseName2
    
    production:
      <<: *default
      database: databaseName3
    View Code

    2.3 配置cors

    /config/application.rb

    config.middleware.insert_before 0, Rack::Cors do
          allow do
            origins 'http://localhost:3000'
            resource '*', :headers => :any, :methods => [:get, :post, :options,:put,:delete], :credentials=> true
          end
        end

     

    2.4 配置session和cookie

    !  api模式默认不带

    /config/application.rb

    config.middleware.use ActionDispatch::Cookies
    config.middleware.use ActionDispatch::Session::CookieStore

    /app/controllers/application_controller.rb

    
    
      before_action :set_csrf_cookie
    include ActionController::Cookies
    include ActionController::RequestForgeryProtection
    
    # 放最后
    private  
    def set_csrf_cookie
       cookies["CSRF-TOKEN"] = form_authenticity_token
    end

    3. 简单的用户认证和登录

    3.1 创建模型

    rails g model User username:string email:string password_digest:string 

    3.2 配置模型验证

    /app/models/user.rb

    validates :password, length: {in: 8..20}
    before_save {self.email = email.downcase}
    validates :username, presence:true, length: {in: 6..20}
    validates :email, presence:true, length: {in: 5..255}, format: {with: /A[w+-.]+@[a-zd-.]+.[a-z]+z/i}, uniqueness:{case_sensitive: false}
    has_secure_password

    3.3 controller

    rails g controller User signin signup

    /app/contorllers/application_controller.rb

    
    
      helper_method :current_user
    def current_user
           @current_user ||= session[:user_id] && User.find(session[:user_id])
    end
    def require_user render json: {code:-1,info:'login_required'} unless current_user end

    /app/controllers/user_controller.rb

      def signup
          @user = User.new(user_params)
          if !@user.valid?
              code = 0
              data = @user.errors.messages
              info = 'bad_for_reasons'
          else
              if @user.save
                  code = 1
                  info = 'success'
                  data = {userId:@user.id,username:@user.username}
              else
                 code = 0
                 data = ''
                 info = 'reason_unknown'
             end
          end
          render json: {code:code, info:info,data:data}
      end
    
      def signin
          @user = User.find_by_email(params[:email])
          if @user && @user.authenticate(params[:password])
              session[:user_id] = @user.id
              render json: {code:1, info:'success',data:{userId:@user.id,username:@user.username}}
          else 
              render json: {code:0,info:'bad'}
          end
      end
    
     def destroy # 注销
          session[:user_id] = nil
          render json: {code:1,info:'success'}
     end
        
    
    private 
    def user_params
        params.require(:user).permit(:username,:email,:password)
    end

     

    3.4 配置路由

    格式: get 'url', to: 'controller#method'

    3.5 启动

    rails s

    4. 部署

    rails s -e production

    可能会提示缺少SECRET_KEY_BASE

    RAILS_ENV=production rake secret
    
    /etc/profile
    export SECRET_KEY_BASE=刚才生成的密钥
    source /etc/profile

     更多查看

    https://www.cnblogs.com/yxi-liu/p/10331310.html

  • 相关阅读:
    2014下半年软考总结
    Java学习之Filter
    java学习之PreparedStatement
    java学习之dom4j 对 xml的读取
    Windows查看端口占用及杀掉进程
    CentOS压力测试工具Tsung安装和图形报表生成Tsung安装配置
    Tsung压力测试:Openfire
    CentOS Mysql安装配置
    nodejs、webpack
    IOS操作系统上执行monkey测试
  • 原文地址:https://www.cnblogs.com/yxi-liu/p/10220500.html
Copyright © 2011-2022 走看看