14. februar 2005 - 08:53Der 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.
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.
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.
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"
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.
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.
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.
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.
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.