webForumDet fria alternativet

olika redirect beroende på grupptillhörighet

ASP

14 svar · 516 visningar · startad av oola

Medlem sedan feb. 2004123 inlägg
Frågan#1

Hej!

Har aldrig gjort något liknande och undrar om det här går att göra:

Jag har en sida på vårt intranät, jag kan om jag vill plocka fram den här variabeln: request.servervariables("LOGON_user").

Det jag nu vill veta är om den här användaren är med i en specifik grupp som finns lokalt på webbservern och berende på om han/hon är det eller inte så vill jag göra lite olika saker.

Går det? Tips på hur man gör skulle uppskattas!

Medlem sedan nov. 2002830 inlägg
#2

Vad jag vet är det väl bättre att då köra en sql fråga något i stil med:

SELECT userID (SELECT groupID FROM grupper WHERE tabell.UserID = grupper.UserID) as  GRUPP) FROM tabell

If grupp = 1 then
 response redirect (grupp1)...

Snabb och skissartad lösning skulle jag tro...

Medlem sedan feb. 2004123 inlägg
#3

nja, det är ju ingen grupp som finns i en databas utan en grupp på datorn, en av grupperna som du hittar under 'computer management - local users and groups'.

Medlem sedan mars 20016 260 inlägg
#4

Det vill säga, grymt skissartad lösning med att hämta från databas.

Logon_user vill du inte använda för att få fram användare, se:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/21b3be8f-d4ed-4059-8e21-6cba2c253006.asp

När du väl fått ut användaren får du väll ställa frågor mot AD med LDAP:
http://www.codecomments.com/archive299-2005-6-522394.html

Medlem sedan feb. 2004123 inlägg
#5

Jymdis skrev:

När du väl fått ut användaren får du väll ställa frågor mot AD med LDAP:
http://www.codecomments.com/archive299-2005-6-522394.html

Men det är inget AD jag frågar, det är bara dom lokala grupperna på webservern.

Medlem sedan jan. 2001373 inlägg
#6

Kolla denna tråd

Nått i still med denna, Fast du skall ändra några saker i frågan...

Medlem sedan feb. 2004123 inlägg
#7

martinpartin skrev:

Kolla denna tråd

Nått i still med denna, Fast du skall ändra några saker i frågan...

nu börjar det likna nåt, ska se om jag behöver mer hjälp eller inte.

Medlem sedan feb. 2004123 inlägg
#8

okej, jag fastnade direkt. kan någon hjälpa mig med hur den här frågan...:

SQLStmt = "SELECT displayname FROM 'LDAP://DC=DOMAIN,DC=COM' WHERE objectCategory='person' AND objectClass='user' AND 

sAMAccountname = '"& strstrippeduname &"'"

...ska se ut om jag vill hämta information från samma dator som asp-sidan köra från. alltså inget AD utan från den webbservern som skriptet körs på.

Medlem sedan feb. 20011 198 inlägg
#9

'LDAP://LOCALHOST' kanske?

Medlem sedan feb. 2004123 inlägg
#10

får bara 'Table does not exist'.

Medlem sedan jan. 2001373 inlägg
#11

Ställen där det står ZZZ skall du ändra till dina saker...

Detta script kollar om en användare är medlem i en grupp i AD:t
returnerar ismember = 1 eller null

finns säkert rum för förbättringar... ;)


'remove domain prefix from username

Dim strUsername, isspos, strstrippeduname, inoofc
    strUsername = Request.ServerVariables("REMOTE_USER")
    isspos = Instr(strUsername, "\")
    inoofc = Len(strUsername)
    isspos = inoofc - isspos
    strstrippeduname = Right(strUsername, isspos)
    
'connect to ad

Dim conn, SQLStmt
Set conn = Server.CreateObject("ADODB.Connection")

	conn.Provider = "ADsDSOObject"
	conn.Properties("User ID") = "ZZZ"
	conn.Properties("Password") = "ZZZ"
	conn.Properties("Encrypt Password") = True
	conn.Open "ADProvider"

'SPECIFY GROUP TO SEARCH FOR
Dim
str_group = "ZZZ"

	SQLStmt = "SELECT memberof FROM 'LDAP://DC=ZZZ,DC=ZZZ' WHERE objectCategory='person' AND objectClass='user' AND sAMAccountname = '"& strstrippeduname &"'"

'return values
Dim rs1, ismember, str_sstr
Set rs1 = Conn.Execute(SQLStmt)
Do Until RS1.EOF
arrGroups = RS1.Fields("memberOf").Value
    If IsNull(arrGroups) Then
ismember = 0
    Else
For Each strGroup In arrGroups
str_sstr = Instr(strGroup, str_group) 
         If str_sstr <> 0 then

       ismember = 1
         Else

         End if

Next
    End If
RS1.MoveNext
Loop
Medlem sedan jan. 2001373 inlägg
#12

vad använder du för konto ???

Medlem sedan feb. 2004123 inlägg
#13

"Detta script kollar om en användare är medlem i en grupp i AD:t"

Tack, men det är inte det som det handlar om, det är inte i AD:t utan i en lokal användargrupp på datorn.

Kontot är ett admin-konto.

Medlem sedan feb. 2004123 inlägg
#14

Det här fixade grejen, till funktionen skickar jag in Request.ServerVariables("AUTH_USER")

<%
'****************************************************
' Funktion för att ta fram grupptillhörighet
'****************************************************
Function MemberInGroups(strUser)

	strUsername = "XXX"		'OBS: MÅSTE VARA LOKAL ADMIN
	strPassword = "XXX"

	Const ADS_SECURE_AUTHENTICATION = &H1

	Set objNet = Server.CreateObject("WScript.Network")
	strComputerName = objNet.ComputerName
	strUsername = strComputername & "\" & strUsername
	Set objWinNT = GetObject("WinNT:")
	Set objWebserver = objWinNT.OpenDSObject("WinNT://" & strComputerName, strUsername, strPassword, ADS_SECURE_AUTHENTICATION)
	objWebserver.Filter = Array("group")

	For Each objGrp In objWebServer
		If objGrp.Class = "Group" Then
		
			
			If objGrp.IsMember("WinNT://" & Replace(strUser, "\", "/")) Then
				If MemberInGroups <> "" Then
					MemberInGroups = MemberInGroups & "¤¤¤"
				End If
				MemberInGroups = MemberInGroups & strComputerName & "\" & objGrp.Name
			End If

		End If
	Next

	Set objWebserver = Nothing
	Set objWinNT = Nothing
	Set objNet = Nothing

End Function

%>
Medlem sedan jan. 2001373 inlägg
#15

OK !

251 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)