webForumDet fria alternativet

Login för specifika sidor

ASP

6 svar · 239 visningar · startad av Janspeed

Medlem sedan jan. 2001510 inlägg
Frågan#1

Jag för söker skapa ett väldigt basic loginsystem för att bara ge olika personer access till en eller flera sidor. Själva loginkoden ska sedan läggas i en includefil och implementeras på samtliga sidor som ska lösenordsskyddas.

Jag vill sedan också bara ge vissa personer access till vissa sidor och andra personer till andra sidor. Dvs. kunna bestämma vem som ska ha access till en viss sida.

Det jag har gjort nu är att skapa en databas med kolumnerna användarnamn, namn, lösenord, Sida1 som ska lösenordsskyddas, Sida2 som ska lösenordsskyddas, osv..., osv...

Kolumnerna sida1, sida2 och så vidare är har bara värdet 1 eller 0 beroende på om personen ska ha access till sidan eller inte.

Nu undrar jag om det är någon som har en bra lösning på kod eller om någon redan frågat detta förut och jag kan spåna där för lite idéer?

Så här ser loginkoden ut än så länge:


Response.Expires = -1500

SQL = "SELECT Name FROM tblAdminLogin WHERE Signature LIKE '" & Session("username") & "' AND Password LIKE '" & Session("password") & "'"
Set Conn = server.CreateObject("ADODB.Connection")
Conn.ConnectionString = "driver={SQL Server};server=localhost;uid=web;pwd=web;database=db112186"	
Conn.Open
Set rs = Conn.Execute(SQL)
If rs.EOF Then

rs.Close
Set rs = Nothing

Conn.Close
Set Conn = Nothing

	Session("username") = ""
	Session("password") = ""
	Session.Abandon
	Response.Write "<tr><td>Du måste ha ett giltigt användarnamn och lösenord.<br>"
	Response.Write "Var god försök igen!<br>"
	Response.Write "<a href=/admin/admin_login.asp>Försök igen</a></td></tr>"

Else

Name = rs("Name")

rs.Close
Set rs = Nothing

Conn.Close
Set Conn = Nothing

...
Resten av sidkoden...
...

Det som saknas är själva sididentifieringen och så har jag lite problem med sessions i form av att jag måste stänga ner webläsaren efter att jag loggat ut för att kunna logga in igen.

Tacksam för hjälp. :)

//JANspeed

Medlem sedan okt. 20001 558 inlägg
#2

En lösning är ju att låta alla logga in på samma sida och sedan kolla ifall den inloggade har rättigheter att kolla på varje specifik sida...

------------------
"When the 500 isn't right, you're in hell, when a Superbike isn't right, it's ok"
Valentino Rossi, Nastro Azurro Honda

Medlem sedan jan. 2001510 inlägg
#3

Jo, det är ju poängen. Alla loggar in på samma sida men beroende på vem du är så har du access till vissa sidor.

Till exempel om jag är sysadmin så har jag kanske access till alla sidor och om jag är säljansvarig så har jag access till alla försäljningssidor eller om jag är personalansvarig så har jag bara access till sidan med lönerna på. (inte för att jag skulle låta nån hantera lönerna på nätet men som exempel).

Alla loggar in på samma sida och kommer till en förteckning över vilka sidor som finns.(<select> )

När de väljer en sida så känner sidan av om de har tillgång till sidan eller inte.

Problemet är att få in detta i ett script som sedan kan inkluderas på alla sidorna förutom loginsidan och eventuellt förteckningssidan(Fast det bör ju gå att lösa genom att ge alla användare access till den sidan).

//JANspeed

[Redigerat av Janspeed den 23 apr 2001]

Medlem sedan okt. 20001 558 inlägg
#4

> inc_top.asp

If objRS("userAccessLevel") = 1 Then

Sidans innehåll

> inc_bot.asp

Else
Response.Write "Oops, du skall nog inte vara här
End If

Men detta är ju så simpelt, är det verkligen detta du vill ha hjälp med? Eller missuppfattade jag dig?

------------------
"When the 500 isn't right, you're in hell, when a Superbike isn't right, it's ok"
Valentino Rossi, Nastro Azurro Honda

[Redigerat av Rossifumi den 23 apr 2001]

Medlem sedan jan. 2001510 inlägg
#5

Jag tror jag löste mitt eget problem genom att ge en variabel namnet på sidan som är samma som namnet på kolumnen i tabellen. Sedan lägger jag till variabeln dynamiskt i SQLsöksträngen.

typ så här:


<% Page = "Sida1" %>

Kod i includefil:

<%
Response.Expires = -1500

SQL = "SELECT Name FROM tblAdminLogin WHERE Signature LIKE '" & Session("username") & "' AND Password LIKE '" & Session("password") & "' AND " & Page & " LIKE 1"
Set Conn = server.CreateObject("ADODB.Connection")
Conn.ConnectionString = "driver={SQL Server};server=localhost;uid=web;pwd=web;database=db112186"	
Conn.Open
Set rs = Conn.Execute(SQL)
If rs.EOF Then

rs.Close
Set rs = Nothing

Conn.Close
Set Conn = Nothing

	Session("username") = ""
	Session("password") = ""
	Session.Abandon
	Response.Write "<tr><td>Du måste ha ett giltigt användarnamn och lösenord.<br><br>"
	Response.Write "Om du vill logga in igen klicka här:<br>"
	Response.Write "<a href=/admin/admin_login.asp>Försök igen</a></td></tr>"

Else

Name = rs("Name")

rs.Close
Set rs = Nothing

Conn.Close
Set Conn = Nothing

%>

Men tack ändå för hjälpen. :)

//JANspeed

Medlem sedan okt. 20001 558 inlägg
#6

Okidoki :e

------------------
"When the 500 isn't right, you're in hell, when a Superbike isn't right, it's ok"
Valentino Rossi, Nastro Azurro Honda

Medlem sedan feb. 20001 590 inlägg
#7

Så som du gjort funkar perfekt, har gjort det flera gånger, med olika accesser osv.

Har du tillgång till servern, så kan du skapa användare där, och tvinga på en inloggning på servern för att komma åt sidorna. Man loggar in på servern med en dialogruta med användare/lösenord. Detta är dock smidigast om man har direkt tillgång till servern.
Med hjälp av en komponent (kommer inte ihåg namnet, tror den heter UserRights någonting) kan man kolla rättigheterna på den onloggade personen i ASP koden, och därefter avgöra vad som ska vara synligt på sidan, länkar osv.

Återigen, scriptet du kör nu funkar jättebra, men har du tillgång till servern kan du även göra som jag nämnde.

/T

------------------
This is what the KLF is about

262 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)