Avatar billede ihtezaz Praktikant
14. februar 2005 - 08:53 Der er 9 kommentarer og
2 løsninger

FormsAuthentication.RedirectFromLoginPage metoden

Hej,
Jeg har lavet noget rollebasseret login til min applikation. Jeg tjekker hvis login info(brugernavn og kode) kalder jeg : FormsAuthentication.RedirectFromLoginPage();
Når det er sket, går eksekveringen viddere til global.asax filen og i "Application_AuthenticateRequest()" eventhandleren og tildeler brugeren hans roller.

Problemmet er at hvis brugeren får tildelt "administrator" rolle, skal han redirectes til mappen " Administrator" som tillader kun brugere med "administrator" rolle.

Det som der sker lige nu, er at når eventhandleren "Application_AuthenticateRequest()"
har tildelt roller til brugeren, søger den efter en aspx side ved navn "default.aspx".

Hvordan kan jeg istedet få brugeren i administrator mappen's default.htm side.
Jeg har prøvet med Server.Transfer(Administrator/default.htm), men får fejl.
Avatar billede jakobg Nybegynder
14. februar 2005 - 09:21 #1
Prøv med SetAuthCookie(...) i din login-side i stedet: Så bliver authentication cookie'en bare sat, og du skal herefter selv redirect'e hen til den næste side alt efter om brugeren er admin eller ej.
Avatar billede ihtezaz Praktikant
14. februar 2005 - 09:28 #2
Ok, men skal rollerne så også tildeles samtidig i min login side ?
lige nu bliver det gjort i Global.asax filen. For hvis jeg bruger SetAuthCookie(...) bliver min "Application_AuthenticateRequest()" eventhandler ikke udført i global.asax filen og derfor får brugeren ikke tildelt roller.
Avatar billede ihtezaz Praktikant
14. februar 2005 - 09:57 #3
Nu har jeg prøvet med følgende:

if(TjekLogind(txtBNavn.Text,txtKode.Text))
{
FormsAuthentication.SetAuthCookie(txtBNavn.Text,false);
Server.Transfer("Administrator/AdmDefault.htm");
}

Ikke nok med at jeg får nedenstående fejl, jeg mener heller ikke brugeren får tildelt sine roller fra asax filen.
Fejl:

Parser Error Message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.

Source Error:


Line 79:          To disable cookies, set sessionState cookieless="true".
Line 80:    -->
Line 81:    <sessionState
Line 82:            mode="InProc"
Line 83:            stateConnectionString="tcpip=127.0.0.1:42424"
Avatar billede jakobg Nybegynder
14. februar 2005 - 10:13 #4
Uha, jeg har slet ingen anelse om hvad det er du har rodet dig ud i dér: Har du mulighed for at flytte din kode ud af asax og over i login-siden? Jeg er ikke helt sikker på at det er korrekt som du anvender global.asax i denne situation.

Personligt ville jeg pakke al "bruger-håndteringen" (login, tildeling af rettigheder, osv.) ind i en class for sig selv, og så anvende den i login siden.
Avatar billede ihtezaz Praktikant
14. februar 2005 - 10:44 #5
Det skal ligge i global.asax filen, for det virker perfekt med FormsAuthentication.RedirectFromLoginPage() metoden, jeg ønsker bare ikke at bliv redirected. for jeg bliver redirected til default.aspx som jeg ikke aner hvorfor, når jeg ikke har denne fil i min projekt. Hvorfor den skal ligge i global.asax filen, er jo fordi, at når brugeren har fået sit authentication ticket fra login siden udføres eventet i global.asax filen og derved får brugeren tildelt sine roller.
Avatar billede jakobg Nybegynder
14. februar 2005 - 10:51 #6
Hvis du ikke vil redirect'es, skal du bruge SetAuthCookie().

Hvilken side kommer du fra, når du ikke er authenticated? Hvis du går direkte til login-siden, giver RedirectFromLoginPage() ikke meget mening.
Avatar billede ihtezaz Praktikant
14. februar 2005 - 11:19 #7
Jeg har min login side på min defaultside, i venstre frame. Og jeg har sat min loginUrl i webconfig til defaultside. Som regel kommer jeg direkte til defaultsiden.
Avatar billede burningice Nybegynder
14. februar 2005 - 23:45 #8
prøv at bruge Response.Redirect istedet for Server.Tranfer, så burde din kode i global.asax blive udført
Avatar billede ihtezaz Praktikant
15. februar 2005 - 09:39 #9
Hej, har fået det til at virke med SetAuthCookie() nu og Response.redirect. har bare flyttet noget af koden ud fra global fil og til login siden. I må begge ligge svar: cyberfessor og jakobg.
Avatar billede jakobg Nybegynder
15. februar 2005 - 10:56 #10
Tadaaa...
Avatar billede burningice Nybegynder
15. februar 2005 - 11:44 #11
svar :)
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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