usuarios tutorial rails hacer español current_user create como ruby-on-rails console devise

ruby-on-rails - tutorial - pundit rails



¿Cómo iniciar sesión en un usuario que usa Devise desde la consola de Rails? (3)

Aquí hay otro ejemplo que utiliza el token csrf, autentica al usuario y realiza una solicitud 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''

Después de cargar la consola de Rails, ¿cómo debo iniciar sesión en un usuario?

Devise proporciona una ayuda de prueba que se puede usar en pruebas y que he intentado usar en la consola:

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

Pero entiendo:

NoMethodError: undefined method `env'' for nil:NilClass

De todos modos, me gustaría usar el ayudante de diseño real y no este ayudante de prueba. ¿Hay alguna forma de lograr esto?


Aquí hay una manera en que pude hacerlo:

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

Entonces puedes hacer:

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


Puede agregar una acción dentro de uno de sus controladores y usar la técnica que se explica here .

class MyController < ApplicationController # POST /my_controller/become {''email'': ''[email protected]''} def become raise ''not in development environment'' unless Rails.env == ''development'' sign_in User.find_by_email(params[:email]) end end