[ASP.NET] form based Login naar default.aspx

Pagina: 1
Acties:
  • 124 views sinds 30-01-2008
  • Reageer

  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Ik heb een form based login systeem gemaakt voor mijn pagina. Op de pagina heb ik een map gemaakt genaamd 'admin'. In deze map staan files die moeten worden beveiligd.
Wat ik tot nu toe heb gemaakt is een web.config in de root:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<configuration>
  <appSettings>
        <setting voor koppeling naar de database/>
  </appSettings>
  <system.web>
        <authentication mode="Forms">
    <forms name=".DrAuth"
                       loginUrl="admin/Login.aspx"
                       protection="All" />
        </authentication>
        <authorization>
    <allow users="?" />
            </authorization>
    </system.web>
</configuration>


Verder heb ik in mijn admin directory een 2e web.config staan die de vorige settings overrruled.

code:
1
2
3
4
5
6
7
<configuration>
    <system.web>    
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</configuration>


Mijn login systeem werkt maar een ding gaat fout. Als ik correct inlog ga ik naar default.aspx. Dat moet ook kloppen aangezien de 'RedirectFromLoginPage' standaard naar deze pagina verwijst. Probleem is dat hij zoekt naar default.aspx in de root van mijn pagina terwijl deze moet redirecten naar de default.aspx in de admin map.
Hoe moet ik instellen dat hij vanaf het inloggen volledig in de admin map blijft en dus moet redirecten naar admin/default.aspx ipv default.aspx???

Of moet ik anders redeneren... moet ik standaard linken naar de pagina waar ik naartoe wil. gebruiker is niet geldig en moet dus inloggen. Na de inlogprocedure wordt hij wel correct geredirect naar de pagina waar hij naartoe wilde. Dat hele verhaal werkt nml. wel.

[ Voor 50% gewijzigd door Folkert op 31-07-2003 14:36 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Een opmerking over je web-config in de admin directory:
Die setting heeft toch zichzelf op? Je denied toegang voor anonieme users, maar verder laat je wel alle users toe?
* whoami niet snapt
Of moet ik anders redeneren... moet ik standaard linken naar de pagina waar ik naartoe wil. gebruiker is niet geldig en moet dus inloggen. Na de inlogprocedure wordt hij wel correct geredirect naar de pagina waar hij naartoe wilde. Dat hele verhaal werkt nml. wel.
Dit is correct. RedirectFromLoginPage gaat redirecten naar de oorspronkelijk gerequeste pagina.
Als je dus:
http://blabla/admin/default.aspx
request, en je bent niet ge-authenticeert, dan krijg je eerst de login-page te zien. Als je ingelogged bent, dan wordt je naar admin/default geredirected.

[ Voor 16% gewijzigd door whoami op 31-07-2003 09:29 ]

https://fgheysels.github.io/


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
ok, ga ik even naar kijken. Wat ik alleen niet begrijp is het volgende:
Ik link naar de login pagina (admin/login.aspx) Login is geslaagd, vervolgens wordt ik geredirect naar default.aspx en niet naar admin/default.aspx.
Is dit te veranderen? Of moet ik standaard naar pagina's linken achter de login en niet naar de login zelf?

Heb overigens de <allow users="*" /> eruit gehaald.... thanx

[ Voor 10% gewijzigd door Folkert op 31-07-2003 09:47 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Wil je altijd naar admin/default.aspx geredirected worden na het inloggen?

In dat geval kan je misschien eens proberen om in IIS een default-pagina toe te voegen 'admin/default.aspx' en laat dat de eerste pagina zijn waar IIS moet gaan naar kijken.

https://fgheysels.github.io/


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
ik host de site niet zelf... kan niet bij IIS. Maar dit moet toch niet zo moeilijk zijn aangezien het een heel logisch iets is? Directory beveiligen met login. Login geslaagd, nieuwe pagina. Het moet toch mogelijk zijn om RedirectFromLoginPage te bepalen of opnieuw te definieren?

  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
RedirectFromLoginPage redirect altijd naar de oorspronkelijk gerequeste pagina.

Als je naar je applicatie surft, en je logt in, dan zal je geredirect worden naar de default pagina van je applicatie.
Kijk eens naar de ReturnUrl parameter van je querystring in je loginpagina.

Als je op deze manier naar je app surft:
code:
1
http://blabla/admin/default.aspx

dan krijg je je loginpagina, en na het inloggen wordt je naar de admin/default.aspx geredirected.

https://fgheysels.github.io/


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Ok, begrijp ik maar dan de volgende stelling:
1. Link gemaakt naar: http://blabla/admin/default.aspx
2. redirect naar login pagina -> login.aspx
3. ik log correct in en ga naar default.aspx
4. Ik log op default.aspx uit dmv:
ASP.NET:
1
2
3
4
Sub Signout_Click(Src As Object, E As EventArgs)
        FormsAuthentication.SignOut()
        Response.Redirect("login.aspx")
End Sub

5. ik kom weer uit bij mijn login.aspx
6. ga weer inloggen en kom uit bij http://blabla/default.aspx en niet bij:http://blabla/admin/default.aspx :?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Je moet ook niet redirecten naar je loginpagina. dat regelt je web.config.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Wat wil je nu eigenlijk precies doen?

Er mogen geen anonymous users toegang hebben tot je webapplicatie.
Er mogen geen anonymous users toegang hebben tot het admin gedeelte van je webapp?

https://fgheysels.github.io/


  • UniCache2
  • Registratie: Januari 2001
  • Laatst online: 02-03 09:30
En als je het uitloggen nou zo doet:
code:
1
2
3
4
Sub Signout_Click(Src As Object, E As EventArgs)
        FormsAuthentication.SignOut()
        Server.Transfer("login.aspx?ReturnUrl=/admin/default.aspx)
End Sub

  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Iedereen heeft toegang tot de site behalve tot het admin gedeelte. Ik had de volgende tut gevolgd van www.asp.net:
http://samples.gotdotnet....CookieAuth/cookieauth.src
Met daarin de redirect naar de login.aspx.
Maar welke pagina wordt dan opgeroepen als je uitlogt zonder redirect? Maw wat gebeurt er als FormsAuthentication.SignOut() wordt aangeroepen?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

UniCache2 schreef op 31 July 2003 @ 13:02:
En als je het uitloggen nou zo doet:
code:
1
2
3
4
Sub Signout_Click(Src As Object, E As EventArgs)
        FormsAuthentication.SignOut()
        Server.Transfer("login.aspx?ReturnUrl=/admin/default.aspx)
End Sub
Imho moet je Server.Transfer zo veel mogelijk vermijden.. Je viewstate is er namelijk niet zo dol op en dit kan voor hele gekke dingen zorgen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Ik heb die stomme authenticatie uitgezet en zelf maar geregeld, want over dit standaard gedrag kon ik ook niet heenkomen. |:( Is helemaal leuk als je default.aspx frames gebruikt en je login.aspx ook, wordt ie in dit huidige frame geladen en daar is NIKS aan te doen. :? Je kunt ook geen frames regelen met server-side events, wat op zich wel voor zich spreekt.

Overigens werkt Response.Redirect geloof ik niet i.c.m. de standaard forms authenticatie als ik het me goed herinner. Pas ook op als je je smartnavigation aan hebt staan, dan werkt het sowieso niet. 8)7

Wat ik gedaan heb is de authenticatie zelf regelen met een databasequery en i.c.m. md5, is veilig zat. Verder de gebruiker laten redirecten naar de goede pagina inclusief frame met Response.Write<javascript redirect code> 8)

  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Heb denk ik de oplossing gevonden in het volgende script:
code:
1
2
3
4
Sub Signout_Click(Src As Object, E As EventArgs)
     FormsAuthentication.SignOut()
     Response.Redirect(Request.UrlReferrer.ToString())
End Sub


en het werkt naar behoren...

[ Voor 16% gewijzigd door Folkert op 31-07-2003 13:41 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Folkert schreef op 31 July 2003 @ 13:39:
Heb denk ik de oplossing gevonden in het volgende script:
code:
1
2
3
4
Sub Signout_Click(Src As Object, E As EventArgs)
     FormsAuthentication.SignOut()
     Response.Redirect(Request.UrlReferrer.ToString())
End Sub


en het werkt naar behoren...
Ik denk dat je alleen moet controleren of URLReferren niet leeg is.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Greyfox
  • Registratie: Januari 2001
  • Laatst online: 22:57

Greyfox

MSX rulez

Je kunt met 'Location' in je web.config aangeven wat je root is.

MSX 2 rulez more


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Ja, is zeker niet onverstandig! maar ik kan iig verder!
Thanx!
de volgende code komt er dan bij:
code:
1
2
3
4
5
If Not Request.UrlReferrer Is Nothing Then 
Response.Redirect (login.aspx)
else
Response.Redirect(Request.UrlReferrer.ToString())
end if

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Visual Basic .NET:
1
2
3
4
5
If Not Request.UrlReferrer Is Nothing Then 
    Response.Redirect(Request.UrlReferrer.ToString())
else
    Response.Redirect ("login.aspx")
end if

;)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
hahaha, je hebt gelijk, foutje...;-)))

  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Folkert schreef op 31 July 2003 @ 13:17:
Iedereen heeft toegang tot de site behalve tot het admin gedeelte.
Als iedereen toegang heeft tot je site, dan zet je toch gewoon in je web.config het volgende:
code:
1
2
3
<authorization>
  <allow users="*"/>
</authorization>


En zet je in je web.config van je web-gedeelte:
code:
1
2
3
<authorization>
  <deny users="?"/>
</autorization>


Als je nl. in je web.config van je application-root dit aangeeft :
code:
1
2
3
<authorization>
  <deny users="?"/>
</autorization>

Dan zijn anonieme users dus ook niet toegelaten. Als iedereen toegang mag hebben tot dat gedeelte, dan toch ook anonieme? Of begrijp ik jouw doelstelling verkeerd?

[ Voor 30% gewijzigd door whoami op 31-07-2003 14:35 ]

https://fgheysels.github.io/


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
code:
1
2
3
<authorization>
  <allow users="?"/>
</autorization>

dit betekent toch dat alle anonieme en niet geautoriseerde personen toegang hebben tot de site? Wat ook de bedoeling is.

Verder heb ik in mijn directory in mijn web.config staan dat niet geautoriseerde gebruikers geen toegang hebben (<deny users="?"/>en dat gebruikers na inloggen (=geautoriseerd) wel toegang hebben (allow users="*"/>.
Of klopt dat verhaal niet?

[ Voor 10% gewijzigd door Folkert op 31-07-2003 14:33 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Ehm, foutje.... Ipv allow users, moet dat deny users zijn natuurlijk in m'n voorbeeld.
Ff aanpassen....

edit:
fixed
Verder heb ik in mijn directory in mijn web.config staan dat niet geautoriseerde gebruikers geen toegang hebben (en dat gebruikers na inloggen (=geautoriseerd) wel toegang hebben (allow users="*"/>.
Of klopt dat verhaal niet?
Die allow users hoeft er helemaal niet bij. Wat zeg ik, mag er niet bij.

[ Voor 78% gewijzigd door whoami op 31-07-2003 14:37 ]

https://fgheysels.github.io/


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
Wat bedoel je met 'mag er niet bij'? Is het niet zo dat een misschien een beetje dubbelop is? Ik zou logischerwijs aanemen dat er staat dat anonieme gebruikers geen toegang hebben en users wel...
Maar een user is geen anonieme gebruiker en heeft dus toegang wat dus inhoudt dat <allow users"*"/> weg kan. Alleen omdat het in principe dubbelop is? Of kan dat nog conflicten opleveren?

[ Voor 63% gewijzigd door Folkert op 31-07-2003 14:49 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Als een anonieme user je app bezoekt, dan krijgt hij het loginscherm voorgeschoteld.
Als jij in je loginscherm de user authenticeert, en hij mag access hebben, dan doe je een redirectfromloginpage. ASP.NET gaat dan een Authentication cookie schrijven op de user's pc en hij heeft access.
Als jij allow users="*" erbij zet, dan denk ik dat alle users (ook niet geauthenticeerde, dus anonieme) users toegang krijgen, maar dat zou ik ff moeten uittesten....


Net ff uitgetest, en het geeft geen problemen als je allow users="*" erbij zet. Dit komt omdat de authorization section van boven naar onder geinterpreteerd wordt. Als je allow users="*" als eerste element zet, dan heb je dat probleem wel...

[ Voor 22% gewijzigd door whoami op 31-07-2003 15:50 ]

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Als iedereen (ook anonieme users) het publieke gedeelte van je site mogen bezoeken, zet dan gewoon in de web.config van je root het volgende:

code:
1
2
3
<authorization>
  <allow users="*"/>
</authorization>


Iedereen mag dat deel bezoeken, dus als je naar je site surft, krijg je geen login-page voor je neus.
Zet in de web.config van het admin gedeelte dat enkel ingeloggede users (geen anonieme) dat deel mogen zien.
code:
1
2
3
<authorization>
  <deny users="?"/>
</authorization>


Als er dan naar de admin sectie gesurft wordt, dan krijg je de login-page voor je neus. Iemand die een geldige username/wachtwoord heeft, redirect je dan met redirectfromloginpage.

https://fgheysels.github.io/


  • Folkert
  • Registratie: September 2001
  • Laatst online: 10-07 07:58
whoami, 2 zielen één gedachte... :) Ik heb het exact zo gemaakt als je had beschreven... en het werkt prima nu!!

Bedankt!
Pagina: 1