Avatar billede grevlindgren Nybegynder
03. september 2014 - 19:48 Der er 4 kommentarer

Token returneret fra HttpRequest skal indgå i URL

Jeg har en loginform der sender username og password afsted. Ser således ud:

<form action="http://xxxxx.com/GetLoginToken.ashx?userName=USERNAME&amp;password=PASSWORD" method="get" name="HentToken">
Username:<input name="USERNAME" type="text" />
Password: <input name="PASSWORD" type="text" />
<input type="submit" value="Submit" />
</form>

Den returnerer så en token på 20 tegn, som den skriver i browseren. Denne token vil jeg gerne have ikke blev udlæst til browseren, men istedet blev sat i enden af en anden URL, og så åbne denne URL i browser vinduet.

http://xxxxx.com/Open.ashx?token=[de 20 tegn token]
Avatar billede welcor Nybegynder
03. september 2014 - 21:27 #1
For det første:

Din action skal være bare http://xxxxx.com/GetLoginToken.ashx - uden de to parametre. De bliver sat af din form.

For det andet:

Når du laver login-forms, skal (SKAL!) de bruge POST, ikke GET. Ellers kan man læse urlen og brugerens brugernavn og password direkte i alle proxyer requesten kommer igennem.

For det tredje:

Hvis du absolut vil lave din egen loginløsning, overvej at støtte https.

For det fjerde:

Lige præcis dette er løst i alle sprog du kan forestille dig at skrive websider i.

For at svare på dit spørgsmål:

I stedet for at svare med indholdet og 200 OK, svar med 302 Found og en Location-header som peger til http://xxxxx.com/open.ashx?token...
Avatar billede grevlindgren Nybegynder
03. september 2014 - 21:40 #2
Okay, har ændret til post, giver samme respons, så fint nok. Det med https giver god mening, og vil også være et formkrav i den endelige version.

Det sidste det med at ændre fra 200 til 302 med en Locationheader forstår jeg ikke? Hvordan skriver jeg det ind?

PS: Er ikke just nogen kodehaj :-s
Avatar billede welcor Nybegynder
03. september 2014 - 22:14 #3
Når du i din kode svarer med "20 tegn som den skriver i browseren", er dit svar fra serveren noget i denne retning (du skriver ikke hvilket sprog du bruger, men :

200 OK
Content-Type: text/plain
Content-Length: 20

kode på 20 tegn her..


Det du i stedet skal svare er

302 Found
Location: https://xxxx.com/open.ashx?kode=kode på 20 tegn her..

Jeg er ikke så velbevandret i asp.net, men denne side tyder på at man kan skrive

Response.Redirect("https://xxxx.com/open.ashx?kode="+kode, true);

http://msdn.microsoft.com/en-us/library/a8wa7sdt(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
Avatar billede grevlindgren Nybegynder
04. september 2014 - 09:36 #4
Mange tak! Det prøver jeg
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester