Rails Basic 인증 가져오기

6056 단어 초학자Rails

Rails에서의 인증 유형


Rails 개발 과정에는 3가지 인증 유형이 있습니다.
  • Basic 인증
  • Digest 인증
  • Token 인증

  • 여기. 홈페이지에도 3가지 유형이 소개됐다.이 세 개를 처리할 수 있다면 되잖아.
  • 기본 인증


    이번에 가장 간단한 Basic 인증에 대해 절차를 정리하고 싶습니다.

    원래 Basic 인증이란 무엇인가.


    Basic 인증은 서버와 통신할 때 사용자 이름과 비밀번호를 아는 사람이 아니면 그 사이트를 방문할 수 없는 기능을 말한다.

    이런 느낌의 물건이야.

    전제 조건

  • 어플리케이션 서버가 Uniccorn
  • 을 사용하는 것으로 가정합니다.
  • 웹 서버에서 Nginx를 사용하는 경우
    클라우드 사용 AWS
  • 자동 디버깅을 위해 Capistrano를 사용하는 경우
  • application_controller에 쓰는 방법


    모든 컨트롤러로 Basic 인증을 하고 싶으므로 lication 적용controller.rb에 코드 쓰기!
    Rails에는 Basic 인증 방법이 있습니다.
    바로authenticate_or_request_with_http_basic!
    app/controllers/application_controller.rb
    class ApplicationController < ActionController::Base
      before_action :basic_auth
      protect_from_forgery with: :exception
    
      private
    
      def basic_auth
        authenticate_or_request_with_http_basic do |username, password|
          username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"]
        end
      end
    end
    
    authenticate_or_request_with_http_basic Basic 인증을 Rails로 간단히 수행하는 방법username == ENV["BASIC_AUTH_USER"]&& password == ENV["BASIC_AUTH_PASSWORD"]에서 환경 변수를 사용합니다.
    username="keita"또는 코드에 직접 쓰면Giithub에 오류가 발생하여 업로드할 때 불법으로 이용됩니다!조심하세요!

    종착역~.bash_프로필에 환경 변수를 쓰다


    이번에는 공식 환경에서만 Basic 인증을 실시합니다.
    본지
    $ vim ~/.bash_profile
     <!--「i」を押してインサートモードにいく-->
    
    export BASIC_AUTH_USER='keita'
    export BASIC_AUTH_PASSWORD='0322'
    <!-- 書き終えたらescキーを押して、「:wq」を押して保存して終了-->
    
    $ source ~/.bash_profile
    
    <!--最後に.bash_profileを読み込んで環境変数を反映させる-->
    
    

    공식 환경에서만 Basic 인증

    config/deploy/production.rb에 보충한다.
    config/deploy.rb
    # server "db.example.com", user: "deploy", roles: %w{db}
    server "(御自身のEC2のIPアドレス)", user: "ec2-user", roles: %w{app db web}
    
    set :rails_env, "production"
    set :unicorn_rack_env, "production"
    # role-based syntax
    # ==================
    
    이렇게 유니콘은 현재의 환경을 정식 환경으로 인식했다.

    더욱controller의 기술 변경


    app/controllers/application_controller.rb
    class ApplicationController < ActionController::Base
      before_action :basic_auth, if: :production? 
      protect_from_forgery with: :exception
    
      private
    
      def production?
        Rails.env.production?
      end
    
      def basic_auth
        authenticate_or_request_with_http_basic do |username, password|
          username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"]
        end
      end
    
    end
    
    추가before_action :basic_auth, if: :production? def production?
    Rails.env.production?
    end
    두 개밖에 없어요.production? 방법으로 정의Rails.env.production?했기 때문에 정식 환경인지 현지 환경인지 알 수 있다.

    마지막으로 디버깅 확인 동작을 진행합니다.

    $ bundle exec cap production deploy
    
    "응, 잘 안되긴 하지만..."할 때 해봐야지
  • AWS 콘솔에서 EC2 재부팅
  • nginx 수동 재부팅
  • Mysql 수동 재부팅

  • 유니콜 킬을.
    그리고 자동 디버깅 명령을 다시 실행합니다
    이렇게 하면 순조롭게 진행될 수 있을 것이다.나중에 와이어를 다시 확인하십시오.

    수고하셨습니다!


  • 좋은 웹페이지 즐겨찾기