Yii Framework Forum: Actiondelete Post Only - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Actiondelete Post Only Rate Topic: -----

#1 User is offline   MorfeoXp 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 27-October 12

Posted 09 December 2012 - 11:40 AM

Salve a tutti!

Sto realizzando un'applicazione con Yii e fino ad ora, sono riuscito bene o male a risolvere i vari problemi che si sono presentati grazie alla guida ufficiale, al forum ed ai wiki.

Ma non mi è chiaro perché per un actionDelete() è necessaria una richiesta tramite POST e non tramite GET.
Immagino che ciò sia dovuto a ragioni di sicurezza.

Inoltre non mi capisco perché, quando genero tramite gii le classi CRUD, non si tiene conto ti tale limitazione. Pertanto quando si va a cliccare sui link che prevedono l'eliminazione di un record si ottiene "Error 400 Your request is invalid.", a meno che non si vada ad eliminare dal metodo filters() il rigo
'postOnly + delete',
.

Quindi per risolvere tale problema consigliate di rimuovere la limitazione alla operazioni di cancellazione oppure modificare i link delle view affinché eseguano una richiesta di tipo post?

Eventualmente, come modificare il link per la cancellazione presente in una gridview?

Grazie
0

#2 User is offline   MorfeoXp 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 27-October 12

Posted 09 December 2012 - 12:57 PM

Aggiornamento...

Effettuando ulteriori verifiche, il problema del non funzionamento dei link attraverso i quali si eliminano dei record, era dovuto al fatto che avevo linkato in protected/views/layouts/main.php il file di jQuery.
Quindi il codice generato da gii, come era ovvio, è corretto... :)

Per quando riguarda la gridview, non potendo utilizzare i pulsanti di default, ho la seguente situazione

array
(
	'class'=>'CButtonColumn',
	'template'=>'{delete}',
	'buttons'=>array
	(
		'delete' => array
		(
			'label'=>'Elimina la macrocategoria',
			'imageUrl'=>Yii::app()->request->baseUrl.'/images/x.png',
			'url'=>'#',
			'click'=>"function(){if(!confirm('Eliminare la macrocategoria '+$(this).parent().parent().children(':nth-child(2)').text()+'?')) return false;}",
		),
	),
),


non mi è chiaro come far in modo che cliccando sul pulsante per l'eliminazione di un record, venga effettuata una richiesta di tipo POST e non GET...
0

#3 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 09 December 2012 - 01:18 PM

Se uno spider arriva su un sito e pesca una richiesta GET che fa un delete, ... beh cancella tutto il tuo database =). Avere le rotte in POST è una buona pratica per salvarsi da cancellazioni accidentali.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users