복붙노트

[RUBY-ON-RAILS] 어떻게 레일 콘솔에서 고안를 사용하여 사용자가 로그인하는?

RUBY-ON-RAILS

어떻게 레일 콘솔에서 고안를 사용하여 사용자가 로그인하는?

레일 콘솔을로드 한 후, 어떻게 사용자 로그인해야합니까?

유증은 테스트에 사용되는 테스트 도우미를 제공하고, 나는 콘솔에서 사용할 시도했다 :

>> include Devise::TestHelpers
>> helper.sign_in(User.first)

그러나 나는 얻을 :

NoMethodError: undefined method `env' for nil:NilClass

어쨌든, 난 진짜 유증 도우미가 아니라이 테스트 도우미를 사용하고 싶습니다. 이를 달성하는 방법은 없나요?

해결법

  1. ==============================

    1.여기에 내가 그것을 할 수 있었던 하나 개의 방법이있다 :

    여기에 내가 그것을 할 수 있었던 하나 개의 방법이있다 :

    >> ApplicationController.allow_forgery_protection = false
    >> app.post('/sign_in', {"user"=>{"login"=>"login", "password"=>"password"}})
    

    그럼 당신은 할 수 있습니다 :

     >> app.get '/some_other_path_that_only_works_if_logged_in'
     >> pp app.response.body
    
  2. ==============================

    2.여기서, CSRF 토큰을 사용하는 사용자를 인증하고, POST / GET 요청을 만드는 또 다른 예이다.

    여기서, CSRF 토큰을 사용하는 사용자를 인증하고, POST / GET 요청을 만드는 또 다른 예이다.

    # get csrf token
    app.get  '/users/sign_in'
    csrf_token = app.session[:_csrf_token]
    
    # log in
    app.post('/users/sign_in', {"authenticity_token"=>csrf_token, "user"=>{"email"=>"foo", "password"=>"bar"}})
    
    # get new csrf token, as auth user
    app.get ''
    csrf_token = app.session[:_csrf_token]
    
    # make a POST request
    app.post '/some_request.json', {"some_value"=>"wee", "authenticity_token"=>csrf_token}
    
    # make a GET request
    app.get '/some_other_request.json'
    
  3. ==============================

    3.당신은 당신의 컨트롤러 중 하나 내부 작업을 추가하고, 기술은 여기에서 설명 할 수 있습니다.

    당신은 당신의 컨트롤러 중 하나 내부 작업을 추가하고, 기술은 여기에서 설명 할 수 있습니다.

    class MyController < ApplicationController
      # POST /my_controller/become {'email': 'test@example.com'}
      def become
        raise 'not in development environment' unless Rails.env == 'development'
        sign_in User.find_by_email(params[:email])
      end
    end
    
  4. from https://stackoverflow.com/questions/4929078/how-to-sign-in-a-user-using-devise-from-a-rails-console by cc-by-sa and MIT license