rails not example español ejemplos could ruby-on-rails ruby devise ruby-on-rails-5

ruby-on-rails - not - devise rails español



Rails 5 ActionController:: Error de InvalidAuthenticityToken (4)

Como se indica en las notas de documentación de Devise para Rails 5

Para Rails 5, tenga en cuenta que protect_from_forgery ya no está before_action cadena before_action , por lo que si ha configurado authenticate_user antes de protect_from_forgery , su solicitud dará como resultado "No se puede verificar la autenticidad del token CSRF". Para resolver esto, cambie el orden en el que los llama o use protect_from_forgery prepend: true .

Tengo una aplicación de rieles que planeo actualizar a rieles 5. Estoy usando el dispositivo (v4.2.0) junto con los rieles (v5.0.0). Como se sugirió en el archivo README.md de Devise, intenté mover protect_from_forgery encima de before_filter pero aún cuando intento iniciar sesión o actualizar mi error, ActionController::InvalidAuthenticityToken un error ActionController::InvalidAuthenticityToken

Mi Application Controller es

class ApplicationController < ActionController::Base protect_from_forgery with: :exception, prepend: true before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) devise_parameter_sanitizer.permit(:account_update, keys: [:name]) end end

Y mi otro BugController es

class BugsController < ApplicationController protect_from_forgery prepend: true, with: :exception before_action :authenticate_user! before_action :set_bug, only: [:show, :edit, :update] def update respond_to do |format| if @bug.update(bug_params) format.html { redirect_to @bug, notice: ''Bug was successfully updated.'' } format.json { render :show, status: :ok, location: @bug } else format.html { render :edit } format.json { render json: @bug.errors, status: :unprocessable_entity } end end end private def bug_params params.require(:bug).permit(:product, :component, :title, :description, :status_id, :created_by_id, :assigned_to_id) end end


Hace poco lo encontré de forma bastante grande y descubrí que mi error era que el nombre de dominio de mi aplicación había cambiado recientemente, pero olvidé actualizar session_store.rb. Puede que no sea un problema de todos, pero lo informará como un error CSRF. Así que por favor echa un vistazo a config / session_store.rb


He usado algo como esto y funciona para mí.

class WelcomeController < ActionController::Base protect_from_forgery with: :exception before_action :authenticate_model! end


Nota : Si bien esta respuesta tiene el efecto deseado, lo hace reduciendo la seguridad general. La siguiente respuesta de Alon es más correcta y mantiene la seguridad del sitio.

class BugsController < ApplicationController skip_before_filter :verify_authenticity_token protect_from_forgery prepend: true, with: :exception before_action :authenticate_user! before_action :set_bug, only: [:show, :edit, :update] end

Me gusta esto