Avatar billede thor.ostergaard Nybegynder
28. december 2003 - 08:26 Der er 5 kommentarer og
1 løsning

Rollebaseret sikkerhed

Hej,
Jeg hygger mig med at få rollebaseret sikkerhed til at køre på en web-application og har sådan set fået det til at køre på min lokale IIS, men når jeg lægger det ud hos min udbyder vil det ikke køre :-(

Jeg har lagt denne kode ind i min global.aspx.vb:
        If Not HttpContext.Current.User Is Nothing Then
            If HttpContext.Current.User.Identity.IsAuthenticated Then
                If (TypeOf HttpContext.Current.User.Identity Is FormsIdentity) Then
                    Dim id As FormsIdentity = CType(HttpContext.Current.User.Identity, FormsIdentity)
                    Dim ticket As FormsAuthenticationTicket = id.Ticket

                    Dim userData As String = ticket.UserData
                    Dim roles As String() = userData.Split(",")
                    HttpContext.Current.User = New GenericPrincipal(id, roles)
                End If
            End If
        End If

Og når brugeren logger på bliver hans rolle registeret i userData, som det kan ses her:

                Dim userData As String = objNode("Rolle").InnerText

                Dim ticket As New FormsAuthenticationTicket( _
                    1, _
                    txtBrugernavn.Text, _
                    System.DateTime.Now, _
                    System.DateTime.Now.AddMinutes(30), _
                    False, _
                    userData, _
                    FormsAuthentication.FormsCookiePath)

                ' Encrypt the ticket.
                Dim encTicket As String = FormsAuthentication.Encrypt(ticket)

                ' Create the cookie.
                Response.Cookies.Add(New HttpCookie(FormsAuthentication.FormsCookieName, encTicket))

Og jeg styrer rettighederne via web.config som ses her:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
  <system.web>
    <authorization>
      <allow roles="Admin" />
      <deny users="*" />
    </authorization>
  </system.web>
</configuration>

Som sagt virker det fint på min lokale IIS, men når jeg lægger det ud hos min udbyder finder den ikke rollen. Hvis jeg spørger med context.User.IsInRole("Admin") er den sand på min egen IIS, men falsk hos min udbyder.

Er der én der har et bud på, hvor det går galt?
Avatar billede burningice Nybegynder
01. januar 2004 - 02:02 #1
hvilket event i din global.asax bruger du til at udføre din kode?
Avatar billede thor.ostergaard Nybegynder
01. januar 2004 - 09:35 #2
Application_AuthenticateRequest
Avatar billede burningice Nybegynder
01. januar 2004 - 22:12 #3
kay... jeg sidder nemlig og leger med noget det samme, men jeg bruger

FormsAuthentication_OnAuthenticate
Avatar billede thor.ostergaard Nybegynder
02. januar 2004 - 09:20 #5
Jeg prøvede at skifte til Application_OnAuthenticateRequest men det ændrede ingen ting.
Avatar billede thor.ostergaard Nybegynder
19. januar 2004 - 10:10 #6
Jeg tror jeg lukker denne tråd - er ikke kommet videre, men har valgt en anden implementeringsvej.
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