webForumDet fria alternativet

Undvika querystring vid editering

8 svar · 521 visningar · startad av doggelito

doggelitoMedlem sedan juni 20003 076 inlägg
#1

I gammal asp körde man alltid ex. editNews.asp?NewsID=1234 och man kom då till en sida där man kan uppdatera nyheten 1234.
Vilka möjligheter har man i asp.net?
Upplägget är en repeater eller gridview och editering sker på annan sida.

Kan jag posta till den andra sidan i från en knapp i gridviewn och skicka med id:t som ett argument på något vis, eller finns andra sätt?

GladhMedlem sedan maj 20012 812 inlägg
#2

Du har samma möjlighet i ASP.NET att själv bestäma URL:en som en LinkButton skall ha. Det skall även finnas möjlighet (från 2.0) att sätta Target på visa postback-kontroller. Vilket så fall gör att när sidan gör en postback, så görs den inte till samma sida, utan till din Target sida. Vet dock inte hur mycket information som följer med när du gör så.

Det vanligaste är väl annars att du gör en postback till din egen sida, och i ditt click-event så plockar du fram NewsID och sedan gör en Response/Transfer till nästa sida...

- M

doggelitoMedlem sedan juni 20003 076 inlägg
#3

Antingen missuppfattar jag ditt svar eller så missuppfattade du min fråga. :)

Det är ju inga problem att tex sätta newsid som CommandArgument på en linkbutton/button i en gridview och i OnRowCommand köra en redirect till editnews.aspx?id=(e.CommandArgument)

Men det just det jag vill slippa! :D
Jag vill inte att id:t är synligt för användaren i querysträngen.

Jag vill alltså få över id:t på annat sätt.

Det går ju precis som du skriver att bestämma PostBackUrl men frågan då blir hur jag hämtar upp knappens argument på target-sidan?

doggelitoMedlem sedan juni 20003 076 inlägg
#4

Hmm, det finns tydligen något kallat PreviousPage och IsCrossPagePostBack, intressant! Hade jag ingen aning om! :)
http://aspalliance.com/1040_Working_with_Cross_Page_Posting_Using_ASPNET_20.4

Med den hjälpen bör jag kunna lösa det hela.

GladhMedlem sedan maj 20012 812 inlägg
#5

doggelito skrev:

Det är ju inga problem att tex sätta newsid som CommandArgument på en linkbutton/button i en gridview och i OnRowCommand köra en redirect till editnews.aspx?id=(e.CommandArgument)

Men det just det jag vill slippa!
Jag vill inte att id:t är synligt för användaren i querysträngen.

Nu måste du ju inte sätta det i querysträngen, det bör gå utmärkt att lägga ner det i FORM kollectionen också. Fast då blir det ju även synligt om man ligger och sniffar av all trafik som skickas. Vilket du ju även blir med en postback.

Så frågan är hur viktigt det är för dig att man inte skall kunna uttnytja id:et på något sätt. Eller det är bara en kosmetisk fråga för din del...

- M

doggelitoMedlem sedan juni 20003 076 inlägg
#6

Min tanke var att man skulle kunna slippa verifiera användaren mot newsid för att kolla om användaren har behörighet att ändra den.
Men jag börjar bli tveksam till hela idéen, får se om jag verkställer den eller ej! :l

GladhMedlem sedan maj 20012 812 inlägg
#7

doggelito skrev:

Min tanke var att man skulle kunna slippa verifiera användaren mot newsid för att kolla om användaren har behörighet att ändra den.
Men jag börjar bli tveksam till hela idéen, får se om jag verkställer den eller ej!

Hur spara du undan din användare information då. För ett sätt att lösa det på är att du väljer att ha din newsId som en GUID och sedan så krypterar du denna innan du lägger med den i querystringen. Det är inte idiotsäkert, men det skall rätt mycket till för att man skall få ett GUID som man kan använda sig av. Problemet är ju bara att någonstans så måste du ju kontrollera så att användaren har rätt att ändra i nyheten, ändå.

Om du sedan väljer att göra det på 2 ställen istället för bara 1 (där id:et skrivs ut) kommer inte påverka din prestand något speciellt, men kommer att göra systemet mycket säkrare... För om man lyckas knäcka din kryptering och se att du använder dig av GUID's och dessutom hitta just rätt GUID för en artikel som man vill ändra i, så är det ju rätt skönt att man får ett slag över fingrarna när något säger stopp...

- M

doggelitoMedlem sedan juni 20003 076 inlägg
#8

Gladh skrev:

Problemet är ju bara att någonstans så måste du ju kontrollera så att användaren har rätt att ändra i nyheten, ändå.

Njae, gridviewn på sida 1 visar bara de artiklar användaren har rätt att se/ändra, den selcteringen finns redan. Och han kan således bara trycka på de editeringsknappar som han ser. Då skulle ingen mer kontroll behöva finnas om newsid inte är åtkomligt.
Men jag är fortfarande rätt skeptisk till hela idén! :)
Jag kör nog på som jag har och verifierar användaren mot nyheten när den ska ändras.

spangoMedlem sedan juni 20008 205 inlägg
#9

doggelito skrev:

Njae, gridviewn på sida 1 visar bara de artiklar användaren har rätt att se/ändra, den selcteringen finns redan. Och han kan således bara trycka på de editeringsknappar som han ser. Då skulle ingen mer kontroll behöva finnas om newsid inte är åtkomligt.

... förutsatt att ingen användare är kompetent nog att (a) hitta ett nyhets-ID och sedan (b) skriva ett eget HTML-formulär. Gör det inte. Det kommer garanterat paja din applikation vid sämsta tänkbara tillfälle.

doggelito skrev:

Jag kör nog på som jag har och verifierar användaren mot nyheten när den ska ändras.

Korrekt beslut (y)

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)