Avatar billede mvhansen Nybegynder
16. oktober 2005 - 22:25 Der er 35 kommentarer og
1 løsning

Forskellig rettigheder ved login på hjemmeside med brug af access

Hej eksperter

Jeg har lavet en login system på min hjemmeside. Hvor jeg bruger access som database.Jeg har et problem, når jeg opretter flere bruger, får de samme rettigheder. Jeg er godt klar over, at det fungere sådan.Men er det muligt at lave det således, at de forskellige bruger ved login får forskellige rettigheder ?
Håber I kan hjælpe mig.

På forhånd tak
mvhansen
Avatar billede michael_stim Ekspert
16. oktober 2005 - 22:28 #1
Du laver et felt i databasen der hedder rettigheder (eller lign.). Der kan du så lägge nogle tal ind. Når du så henter navnet kan du sätte en session med rettighederne.
Avatar billede softspot Forsker
16. oktober 2005 - 22:31 #2
Opgav du at lave det som jeg foreslog? Du har ellers komponenterne til at gøre det, men den formular til at oprette brugere... du skal bare kalde felterne på skærmbilledet og i databasen noget andet og så har du en administrationsdel til at indeholde sider der skal gives adgang til...
Avatar billede mvhansen Nybegynder
16. oktober 2005 - 22:55 #3
Hej softspot og michael stim

Jeg har tre sider på min hjemmeside som der er login på.Jeg skulle kunde login på alle sider. Så har jeg nogle bruger, der kun må få adgang til side 2. Og så nogle bruger, der kun må få adgang til side 3. Og så nogle bruger der må få adgang til side 2 og 3. Kan det lade sig gøre, og hvordan

mvhansen
Avatar billede softspot Forsker
16. oktober 2005 - 23:34 #4
Ja, lav et felt i databasen som indeholder en kommasepareret streng, med numre. Hvert nummer svarer til en side. På hver side (som jo kender sit nummer), checker du om brugeren har adgang til den pågældende side. Hvis ikke sendes brugeren til en loginside (eller hvor denne nu skal sendes hen) og hvis brugeren har adgang vises siden.

Når brugeren logger på lægger du feltet der beskriver hvilke sider brugeren har adgang til ind i session("pageacess").

I toppen af hver side laver du så et check på om siden er tilgængelig for den aktuelle bruger (hvis denne er logget ind). Eksempelvis således:

<%
if (session("userid") & "") = "" and not checkAccess(1) then
  response.redirect "forside.asp"
end if
%>

<!-- VIS RESTEN AF DEN BESKYTTEDE SIDE -->

checkAccess er en funktion som holder den aktuelle brugers rettigheder op mod sidens nummer og returnerer true hvis der er adgang og false hvis der ikke er. Den kunne implementeres således:

function checkAccess(pageNumber)
  dim hasAccess
  hasAccess = (instr(1, "," & session("pageaccess") & ",", "," & pageNumber & ",") > 0)
  checkAccess = hasAccess
end if
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 00:03 #5
Hej softspot

Hvad er en kommasepareret streng.
skal jeg udskifte det, jeg lage ind på de beskyttet sider                          <% @language="vbscript" %>
<!-- #include file="checkprotect.asp" -->

med
<%
if (session("userid") & "") = "" and not checkAccess(1) then
  response.redirect "forside.asp"
end if
%>

<!-- VIS RESTEN AF DEN BESKYTTEDE SIDE -->

checkAccess er en funktion som holder den aktuelle brugers rettigheder op mod sidens nummer og returnerer true hvis der er adgang og false hvis der ikke er. Den kunne implementeres således:

function checkAccess(pageNumber)
  dim hasAccess
  hasAccess = (instr(1, "," & session("pageaccess") & ",", "," & pageNumber & ",") > 0)
  checkAccess = hasAccess
end if

og ved ("pageaccess") sidde et tal ind

mvhansen
Avatar billede softspot Forsker
17. oktober 2005 - 00:06 #6
Har du ikke et link til det andet spørgsmål vi snakkede om (jeg har det ikke lige ved hånden)? Jeg kan ikke huske hvad det var vi kom frem til mht. datastruktur og kode...
Avatar billede softspot Forsker
17. oktober 2005 - 00:06 #7
En kommasepareret streng er en streng med værdier separeret af komma...

Eksempel:

1,2,3
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 00:07 #8
Avatar billede softspot Forsker
17. oktober 2005 - 00:17 #9
Har du stadig dit brugercheck liggende i checkprotect.asp?

Hvis ja, så kan du skifte den kode som ligger der ud med den jeg viste ovenfor, altså checkprotect.asp skal se således ud i stedet:

<%
if (session.contents("userid")&"" = "") or not checkAccess(1) then
  server.transfer "login.asp"
end if
%>

Jeg vælger lige en alternativ metode til at checke om der er indhold i session("userid"), da jeg føler den er mere sikker. Desuden ændrede jeg AND til OR, fordi der jo skal logges ind, hvis enten session("userid") er tom eller checkAccess returnerer false.
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 00:47 #10
jeg har lagt dette i toppen af en af  siden

<%
if (session("userid") & "") = "" and not checkAccess(1) then
  response.redirect "forside.asp"
end if
%>

<!-- VIS RESTEN AF DEN BESKYTTEDE SIDE -->

checkAccess er en funktion som holder den aktuelle brugers rettigheder op mod sidens nummer og returnerer true hvis der er adgang og false hvis der ikke er. Den kunne implementeres således:

function checkAccess(pageNumber)
  dim hasAccess
  hasAccess = (instr(1, "," & session("1") & ",", "," & pageNumber & ",") > 0)
  checkAccess = hasAccess
end if


og det i en anden

<%
if (session("userid") & "") = "" and not checkAccess(1) then
  response.redirect "forside.asp"
end if
%>

<!-- VIS RESTEN AF DEN BESKYTTEDE SIDE -->

checkAccess er en funktion som holder den aktuelle brugers rettigheder op mod sidens nummer og returnerer true hvis der er adgang og false hvis der ikke er. Den kunne implementeres således:

function checkAccess(pageNumber)
  dim hasAccess
  hasAccess = (instr(1, "," & session("2") & ",", "," & pageNumber & ",") > 0)
  checkAccess = hasAccess
end if


og dette i checkprotect

<%
if (session.contents("userid")&"" = "") or not checkAccess(1) then
  server.transfer "login.asp"
end if
%>


i databasen i tabellen har jeg lavet en kolonne mere og kaldt den nr der har jeg
sat 1,2,3 til administrator og til superbruger 2,3
og gæster 3

jeg kan ikke få login siden melder fejl

www.dyrberg.adsl.dk webhotellet  bruger test paswod test
Avatar billede softspot Forsker
17. oktober 2005 - 10:10 #11
Hmmm... jeg tror jeg skal tage mig et kommunikationskursus, for det var da slet ikke det jeg ville have dig til... :)

Et eksempel på starten af en beskyttet side (1 linie ialt):

<!-- #include file="checkprotect.asp" -->





NY FIL STARTER HER! Den hedder checkprotect.asp (11 linier incl. ASP start- og slut-tag):

<%
function checkAccess(pageNumber)
  dim hasAccess
  hasAccess = (instr(1, "," & session("2") & ",", "," & pageNumber & ",") > 0)
  checkAccess = hasAccess
end if

if (session.contents("userid")&"" = "") or not checkAccess(1) then
  server.transfer "login.asp"
end if
%>
Avatar billede softspot Forsker
17. oktober 2005 - 10:13 #12
OM IGEN!

Et eksempel på starten af en beskyttet side (2 linier ialt):

<% thisPageNumber = 1 %>
<!-- #include file="checkprotect.asp" -->


Variablen thisPageNumber skifter pr. side, så du i databasen kan styre individuelt pr. side, hvad du vil give den enkelte bruger adgang til.


NY FIL STARTER HER! Den hedder checkprotect.asp (11 linier incl. ASP start- og slut-tag):

<%
function checkAccess(pageNumber)
  dim hasAccess
  hasAccess = (instr(1, "," & session("2") & ",", "," & pageNumber & ",") > 0)
  checkAccess = hasAccess
end if

if (session.contents("userid")&"" = "") or not checkAccess(thisPageNumber) then
  server.transfer "login.asp"
end if
%>
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 17:41 #13
Hej softspot

Jeg kan ikke få det til at virke, der kommer ingen login side den melder fejl

jeg har gjort følgne.

På en beskyttet side har jeg lagt følgne ind i toppen
<% thisPageNumber = 1 %>
<!-- #include file="checkprotect.asp" -->

------------------------------------------------------------------------------
i checkprotect.asp

<%
function checkAccess(pageNumber)
  dim hasAccess
  hasAccess = (instr(1, "," & session("pageaccess") & ",", "," & pageNumber & ",") > 0)
  checkAccess = hasAccess
end if

if (session.contents("userid")&"" = "") or not checkAccess(thisPageNumber) then
  server.transfer "login.asp"
end if
%>
-------------------------------------------------------------------------------------
i databasen har jeg laver 4 kolonner en
id    brugernavn    og    adgangskode  og  retigheder
1        test                  test            1,2,3
2        test1                test1              2

og du skal ikke tage en  kommunikationskursus, det er mig der ikke forstår det helt
Avatar billede softspot Forsker
17. oktober 2005 - 17:47 #14
Hvad gør du under selve loginprocessen, for det er vigtigt at numrene på de sider, som den bruger der logger sig på, har rettigheder til at se, bliver lagt session("pageaccess"). Altså noget i stil med dette

session("userid") = rs("id")
session("pageaccess") = rs("rettigheder")


"loginprocessen" er den kode hvor du slår op i databasen for at finde ud af om den bruger der forsøger at logge på er oprettet i databasen med de pågældende oplysninger...
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 17:53 #15
Sådan ser min login.asp ud


<!-- #include file="connSetup.asp" -->
<%
if Request.Form("login") <> "" then
  strSQL = "SELECT id " & _
      "FROM bruger " & _
      "WHERE brugernavn = '" & Replace(cstr(Request.Form("username")),"'","''") & "' " & _
      "AND adgangskode = '" & Replace(cstr(Request.Form("password")),"'","''") & "'"
   
  ' Find brugeren
  set objConn = getConnected()
  set objRs = objConn.Execute(strSQL)
   
  ' Hvis der var et resultat, så findes brugeren og login informationerne var korrekte!
  if not objRs.EOF then
    ' Læg brugerens ID i en session-variabel så vi ved hvem der er logget på
    Session.Contents("userid") = cstr(objRs("ID"))
  end if
   
  ' Oprydning!
  objRs.Close
  objConn.Close
  set objRs = nothing
  set objConn = nothing
   
  ' Naviger til den side som oprindelig blev forespurgt
  Response.Redirect Request.ServerVariables("SCRIPT_NAME")
end if
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <title>Login</title>
  </head>
  <body>
   
    <form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post">
      &nbsp;<p align="center">&nbsp;</p>
        <p align="center">&nbsp;</p>
        <p align="center">&nbsp;</p>
        <p align="center"><font size="7"><b>Login System</b></font></p>
        <p align="center">&nbsp;</p>
        <p align="center"><font size="4"><b>Brugernavn:</b></font>&nbsp;&nbsp;&nbsp; <input type="text" name="username"></p>
        <p align="center"><font size="4"><b>Adgangskode:</b></font> <input type="password" name="password"></p>
        <p align="center"><br>
      <input type="submit" name="login" value="Log på" style="font-size: 12pt; font-weight: bold">
        </p>
    </form>

  </body>
</html>
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 17:56 #16
og  connSetup.asp


<%
function getConnected()
  dim strConn, objConn
 
  strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("Database1/database.mdb")
  set objConn = Server.CreateObject("ADODB.Connection")
  ' Forbind til databasen
  objConn.Open strConn

  set getConnected = objConn
end function
%>
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 17:57 #17
og beskyttet side


<% thisPageNumber = 1 %>
<!-- #include file="checkprotect.asp" -->









<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv="Content-Language" content="da">
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<link rel="File-List" href="Privat-filer/filelist.xml">
<title>Video1</title>
<!--[if !mso]>
<style>
v\:*        { behavior: url(#default#VML) }
o\:*        { behavior: url(#default#VML) }
.shape      { behavior: url(#default#VML) }
</style>
<![endif]--><!--[if gte mso 9]>
<xml><o:shapedefaults v:ext="edit" spidmax="1027"/>
</xml><![endif]-->
</head>

+ resten
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 17:58 #18
og beskyttet side 2



<% thisPageNumber = 2 %>
<!-- #include file="checkprotect.asp" -->








<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv="Content-Language" content="da">
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<link rel="File-List" href="Web%20Hoteller-filer/filelist.xml">
<title>Video1</title>
<!--[if !mso]>
<style>
v\:*        { behavior: url(#default#VML) }
o\:*        { behavior: url(#default#VML) }
.shape      { behavior: url(#default#VML) }
</style>


+ resten
Avatar billede softspot Forsker
17. oktober 2005 - 18:01 #19
OK, din login.asp skal ændres til at se således ud (bemærk jeg har gentaget din stavemåde af rettigheder i feltnavnet, da jeg regnede med at det var navngivet sådan i databasen - og så skal det jo passe sammen):

<!-- #include file="connSetup.asp" -->
<%
if Request.Form("login") <> "" then
  strSQL = "SELECT id, retigheder " & _
      "FROM bruger " & _
      "WHERE brugernavn = '" & Replace(cstr(Request.Form("username")),"'","''") & "' " & _
      "AND adgangskode = '" & Replace(cstr(Request.Form("password")),"'","''") & "'"
   
  ' Find brugeren
  set objConn = getConnected()
  set objRs = objConn.Execute(strSQL)
   
  ' Hvis der var et resultat, så findes brugeren og login informationerne var korrekte!
  if not objRs.EOF then
    ' Læg brugerens ID i en session-variabel så vi ved hvem der er logget på
    Session.Contents("userid") = cstr(objRs("ID"))
    Session.Contents("pageaccess") = cstr(objRs("retigheder"))
  end if
   
  ' Oprydning!
  objRs.Close
  objConn.Close
  set objRs = nothing
  set objConn = nothing
   
  ' Naviger til den side som oprindelig blev forespurgt
  Response.Redirect Request.ServerVariables("SCRIPT_NAME")
end if
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <title>Login</title>
  </head>
  <body>
   
    <form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post">
      &nbsp;<p align="center">&nbsp;</p>
        <p align="center">&nbsp;</p>
        <p align="center">&nbsp;</p>
        <p align="center"><font size="7"><b>Login System</b></font></p>
        <p align="center">&nbsp;</p>
        <p align="center"><font size="4"><b>Brugernavn:</b></font>&nbsp;&nbsp;&nbsp; <input type="text" name="username"></p>
        <p align="center"><font size="4"><b>Adgangskode:</b></font> <input type="password" name="password"></p>
        <p align="center"><br>
      <input type="submit" name="login" value="Log på" style="font-size: 12pt; font-weight: bold">
        </p>
    </form>

  </body>
</html>
Avatar billede softspot Forsker
17. oktober 2005 - 18:06 #20
Jeg skal lige sikre mig at checkprotect.asp ser således ud:

<%
function checkAccess(pageNumber)
  dim hasAccess
  hasAccess = (instr(1, "," & session("pageaccess") & ",", "," & pageNumber & ",") > 0)
  checkAccess = hasAccess
end if

if (session.contents("userid")&"" = "") or not checkAccess(thisPageNumber) then
  server.transfer "login.asp"
end if
%>
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 18:09 #21
det gør den men det virker ikke
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 18:12 #22
kolonden hvor retigheder står i  (datatybe) skal det være text eller tal
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 18:12 #23
i databasen
Avatar billede softspot Forsker
17. oktober 2005 - 18:12 #24
tekst
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 18:13 #25
ok det gør den også
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 18:16 #26
Skal ud og spise kommer igen om ca 1.5 time hvis du har tid og løst til at hjælpe
jeg vil godt forhøje med 100 point
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 19:26 #27
Så er jeg her igen
Avatar billede softspot Forsker
17. oktober 2005 - 19:53 #28
Skulle lige selv spise :)
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 20:01 #29
ok
Avatar billede softspot Forsker
17. oktober 2005 - 20:01 #30
Det er lidt mystisk at det ikke fungerer. Jeg kan ikke lige se hvor det skal gå galt med det kode du har vist mig (hvis du ellers har rettet til som jeg har angivet indtil nu). Har du mulighed for at sende filerne til mig...?

jan(a)softspot.dk
Avatar billede softspot Forsker
17. oktober 2005 - 20:03 #31
jo, nu kan jeg godt se hvad der er galt (lige nu). End if skal udskiftes med end function i checkprotect.asp. Skift lige hele koden ud med denne her:

<%
function checkAccess(pageNumber)
  dim hasAccess
  hasAccess = (instr(1, "," & session("pageaccess") & ",", "," & pageNumber & ",") > 0)
  checkAccess = hasAccess
end function

if (session.contents("userid")&"" = "") or not checkAccess(thisPageNumber) then
  server.transfer "login.asp"
end if
%>
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 20:10 #32
jeg tror det virker nu jeg tester det lige og vender tilbage
Avatar billede softspot Forsker
17. oktober 2005 - 20:11 #33
jeg kan komme på med test og test (fra din tabel ovenfor)...
Avatar billede mvhansen Nybegynder
17. oktober 2005 - 21:06 #34
Hej softspot

Du er dygtig, det virker du har en stor tålmodighed,du får mange tak for hjælpen.
Jeg har lige et tillægs spørgsmål, den knap hvor der står web hoteller på, på min hjemmeside, kan man lave en login med ftp adgang med brugernavn og passwod til forskellig domane mapper, når brugerne er oprettet på serveren
du må lige smide et svar så du kan få nogle point

mvhansen
Avatar billede softspot Forsker
17. oktober 2005 - 21:11 #35
Tak, og velbekomme :)

Jeg er faktisk ikke klar over om man kan lave autologin til ftp-adresser fra en webside (altså så brugeren ikke bliver spurgt om brugernavn og adgangskode ved logon). Normalt ville jeg skrive noget i stil med dette for at komme på en ftp-server via min browser:

ftp://brugernavn:adgangskode@www.domæne.dk/mappe1

men jeg er desværre ikke helt sikker på om dette er formatet (det må dog være til at finde ud af).
Avatar billede softspot Forsker
17. oktober 2005 - 21:35 #36
Tak for point :)
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
Kurser inden for grundlæggende programmering

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