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?
