...også kaldet to forskellige applikationer. Dvs. din admin-mappe skal oprettes som en seperat applikation, hvilket gøres fra IIS'en. Man kan desværre ikke bare lave to web.config filer, da <authentification mode="Forms"> ikke lader sig override.
Kan du ikke bare se på Request.QueryString["ReturnUrl"], og så afgøre om det er den ene eller anden login-form du vil vise? Hvis du designer således at alle brugere så og sige er ens, men med forskellige levels af rettigheder (fx. Admin / ikke-admin) så præsenteres de blot for forskellige muligheder efter login.
Synes godt om
Slettet bruger
26. september 2003 - 11:07#8
Det ville være nemmere at implimentere en rolle baseret sikkerhed og angive at kun dem med rollen "admin" har adgang til den mappe osv. Derved kan du stadig angive indstillingerne i web.config og kun 1 projekt. <location path="admin"> <system.web> <authorization> <allow roles="admin" /> <deny users="*" /> </authorization> </system.web> </location> </configuration>
Sub Login_Click(Src As Object, E As EventArgs) OpenDB("admin") dim ssql as string dim ObjCmd As OledbCommand dim ObjRs As OledbDataReader sSQL = "SELECT * FROM adminoversigt WHERE admin_mail='" & txtbruger.Text & "';" objCmd = new OledbCommand(sSql,ObjConn) objRs = objCmd.ExecuteREader()
If objRs.Read() If ObjRs("admin_password").ToString = txtpassword.text Then Dim roleList As New ArrayList roleList.Add("kunde")
Dim roleListArray As String() = roleList.ToArray(GetType(String))
HttpContext.Current.User = New GenericPrincipal(User.Identity, roleListArray) FormsAuthentication.RedirectFromLoginPage(txtbruger.Text, false) Else labbesked.text = "Password er forkert" End If Else labbesked.text = "Bruger er forkert" End If CloseDB("admin") end sub
Men når jeg klikker på login ser det ud som om den går tilbage til den side jeg vil have vist hvorefter at hoppe tilbage til login igen?
Er der nogen der kan se hvad problemet er?
Synes godt om
Slettet bruger
02. oktober 2003 - 00:19#11
Du tilføjer rollerne ved login, men når den loader siden er det glemt igen. Du skal blot sætte din HttpContext.Current.User = New GenericPrincipal(User.Identity, roleListArray) under begin_authorization i global.asax, husk lige at tjekke at bruger har logget ind inden du giver ham adgang til rollerne.
Hvorfor afviser du mit svar når du alligevel bruger min ide ?
jeg har nu stort set fået min login funktion til at virke - dog kommer der følgende fejl når jeg klikker på login:
Exception Details: System.InvalidOperationException: ExecuteReader requires an open and available Connection. The connection's current state is Closed.
Source Error:
Line 28: sSQL = "SELECT * FROM adminoversigt WHERE admin_mail='" & txtbruger.Text & "';" Line 29: objCmd = new OledbCommand(sSql,ObjConn) Line 30: objRs = objCmd.ExecuteREader() Line 31: Line 32: If objRs.Read()
Min login ser ud som følgende:
Sub Login_Click(Src As Object, E As EventArgs) OpenDB("admin") dim ssql as string dim ObjCmd As OledbCommand dim ObjRs As OledbDataReader sSQL = "SELECT * FROM adminoversigt WHERE admin_mail='" & txtbruger.Text & "';" objCmd = new OledbCommand(sSql,ObjConn) objRs = objCmd.ExecuteREader()
If objRs.Read() If ObjRs("admin_password").ToString = txtpassword.text Then FormsAuthentication.RedirectFromLoginPage(txtbruger.Text, false) Else labbesked.text = "Password er forkert" End If Else labbesked.text = "Bruger er forkert" End If CloseDB("admin") end sub
og min global.asax ser ud som følgende:
Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs) If Request.IsAuthenticated = True Then
Dim strConnGlobal as string Dim strSQLGlobal as string Dim objConnGlobal as OledbConnection Dim DBstiGlobal as string Dim ObjRsGlobal as OledbDataReader Dim ObjCmdGlobal As OledbCommand
Har fundet fejlen - stien til databsen var forkert!!
Spørgsmålet er hermed lukket
Synes godt om
Ny brugerNybegynder
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.