Rolebased security fra global.asax Sub Application_Authenticate?
Hej med jer....Jeg har lige et spm ang. og trække Boolean værdier ud, af Db og derefter tilføje brugerrettigheder alt efter om værdierne er true eller false.
I Db har jeg følgende felter:
IsAdministrator IsIntern IsEkstern IsKunde
0 1 1 1
Jeg prøver så at lave en kontrol struktur, som skal finde de forskellige boolean værdier, men det lykkedes mig ikke:
If rd.GetBoolean(0) Then
roles = New String() {"Administrator", "Intern", "Ekstern", "Kunde"}
ElseIf rd.GetBoolean(1) Then
roles = New String() {"Intern", "Ekstern", "Kunde"}
ElseIf rd.GetBoolean(2) Then
roles = New String() {"Ekstern", "Kunde"}
ElseIf rd.GetBoolean(3) Then
roles = New String() {"Kunde"}
End If
Nogen der lige kan give en hånd?
Her er hele metoden:
------------------------------------------------------
Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
'Caster sender'n til applikationen...
Dim app As HttpApplication = CType(sender, HttpApplication)
If Not Context.User Is Nothing AndAlso Context.User.Identity.IsAuthenticated Then
Dim cn As SqlConnection
Dim sql As String
Dim cm As SqlCommand
Dim rd As SqlDataReader
Dim id As String = Context.User.Identity.Name
cn = New SqlConnection(ConfigurationSettings.AppSettings("Security"))
sql = "SELECT IsAdministrator, IsIntern, IsEkstern, IsKunde FROM tblUsers WHERE UserId='{0}'"
sql = String.Format(sql, id)
cm = New SqlCommand(sql, cn)
cn.Open()
Try
rd = cm.ExecuteReader(CommandBehavior.SingleRow Or CommandBehavior.CloseConnection)
'hvis en record er fundet, er UserID godkendt...
If rd.Read() Then
Dim ppal As GenericPrincipal
Dim roles As String()
If rd.GetBoolean(0) Then
roles = New String() {"Administrator", "Intern", "Ekstern", "Kunde"}
ElseIf rd.GetBoolean(1) Then
roles = New String() {"Intern", "Ekstern", "Kunde"}
ElseIf rd.GetBoolean(2) Then
roles = New String() {"Ekstern", "Kunde"}
ElseIf rd.GetBoolean(3) Then
roles = New String() {"Kunde"}
End If
ppal = New GenericPrincipal(Context.User.Identity, roles)
Context.User = ppal
Else
'hvis UserID ikke er gyldigt, clear context...
Context.User = Nothing
End If
Catch
Throw
Finally
cn.Close()
End Try
End If
End Sub
-------------------------------------------------------
Mvh
/DK
