Disattiva il token CSRF nei binari 3


105

Ho un'app per rails che serve alcune API a un'applicazione per iPhone. Voglio essere in grado di pubblicare semplicemente su una risorsa senza preoccuparmi di ottenere il token CSRF corretto. Ho provato alcuni metodi che vedo qui in stackoverflow ma sembra che non funzionino più su rails 3.

Grazie per l'aiuto.

Risposte:


175

Nel controller in cui si desidera disabilitare CSRF il controllo:

skip_before_action :verify_authenticity_token

O disabilitarlo per tutto tranne alcuni metodi:

skip_before_action :verify_authenticity_token, :except => [:update, :create]

O per disabilitare solo i metodi specificati:

skip_before_action :verify_authenticity_token, :only => [:custom_auth, :update]

Maggiori informazioni: RoR Request Forgery Protection


1
Questa è la risposta corretta per le app che hanno un mix di normali moduli accessibili dal browser e endpoint API. La risposta di Markus Proske sarebbe corretta se fossi assolutamente sicuro di non avere alcun modulo accessibile dal browser nella tua app.
Asfand Qazi

Dove va esattamente questo? E se il controller facesse parte di una gemma?
Butta via Account

Posso chiederti se puoi rispondere a questa domanda molto simile? stackoverflow.com/questions/50159847/...

105

In Rails3 puoi disabilitare il token csrf nel tuo controller per metodi particolari:

protect_from_forgery :except => :create 

12
Per chiunque legga, nota che questo è ciò che dovrebbe entrare ApplicationController. La risposta di Mike Lewis sotto ( skip_before_filter :verify_authenticity_token) è come disabilitarlo per controller, assumendo che il controller erediti da ApplicationController.
NudeCanalTroll

Sembra che questo non sia sicuro stackoverflow.com/questions/10676018/… . Cosa ne pensi? è?
siti

@NudeCanalTroll intendi mettere questo nel controller dove voglio che non funzioni?
BlackDivine

Posso chiederti se puoi rispondere a questa domanda molto simile? stackoverflow.com/questions/50159847/...

32

Con Rails 4, ora hai la possibilità di scrivere al skip_before_actionposto di skip_before_filter.

# Works in Rails 4 and 5
skip_before_action :verify_authenticity_token

o

# Works in Rails 3 and 4 (deprecated in Rails 4 and removed in Rails 5)
skip_before_filter :verify_authenticity_token

1
Qual è la differenza?
Adam D. Ruppe

Posso chiederti se puoi rispondere a questa domanda molto simile? stackoverflow.com/questions/50159847/...

John Sam, quando avrò tempo cercherò di risolverlo.
jason328
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.