Avatar billede mogli Nybegynder
17. maj 2003 - 13:53 Der er 19 kommentarer og
1 løsning

adgang til systemet baseret på login

Hej allesammen.

Jeg sidder her og prøver at finde eksempler, tutorials mm. om hvordan man kan lave adgangsbegrænsninger i et system baseret på en brugernavn / password.

Det skal være sådan at hvis det er en administrator, så skal der være fuld adgang til systemet, imens at hvis det er en alm. bruger, så skal der f.eks være adgang til rapportskrivning.

Mit eget forslag ville være at der i en database var brugernavn/password samt en række kolonner, hvor der så var et 0 eller 1 tal, og man så tjekkede på dette. Er dette løsningen?

Håber i kan hjælpe, da det vel er noget af det første man skal have indført i et system?

Vh
Miki
Avatar billede disky Nybegynder
17. maj 2003 - 14:08 #1
lav en database med 3 kolonner:
brugernavn password securitylevel

Når en bruger forsøger at logge ind gør du følgende:

Send en query til basen:

select * from tabel where username='indtastet navn' and password='indtastet password'

hvis der kommer noget retur er brugeren kendt, og ud fra securitylevel har du deres sikkerhedsniveau.

hvis du ikke får noget retur er brugeren ukendt.
Avatar billede arne_v Ekspert
17. maj 2003 - 14:18 #2
Det kan laves på mange måder.

almindelig applikation / web applikation
----------------------------------------

application managed security (=din kode validerer brugernavn/password)

programmatic security (=din kode checker brugeres adgang til at gøre forskelligt)

Du kan enten kode det hele selv eller bruge JAAS frameworket (er standard
med i J2SE 1.4 - og kan hentes som extra til 1.3).

web-applikation
----------------

container managed security (=serverens kode validerer brugernavn/password)

declarative security (=du beskriver adgang til forskkelige sider i en XML fil og ikke i kode)

[man kan også bruge programmatic security]

Det bruges ved at:
  * definere form based login for din web applikation
  * definere en realm (server specifikt)
  * definere adgang til sider
Avatar billede arne_v Ekspert
17. maj 2003 - 14:18 #3
Hvis du fortæller lidt mere om hvad dit behov er, så kan jeg
måske komme med noget lidt mere konkret.
Avatar billede arne_v Ekspert
17. maj 2003 - 14:22 #4
Level based security hvor brugere indeles i niveauer og et højere
niveau altid har adgang til det et lavere niveay har adgang til
er det simpleste.

Idag bruger man dog ofte matrix baseret adgang hvor man har
bruger/rolle i den ene dimension og side/fuktion i den anden
dimension, så man kan vilkårligt kontrollere adgangen.

Normalt vil man definere roller, give rollerne adgang og så tildele
brugernavne en eller flere roller. Både JAAS og form based web applikations
login bygger på det koncept.
Avatar billede mogli Nybegynder
17. maj 2003 - 14:44 #5
Hej Arne_V

Mit behov for systemet er, at når en bruger logger sig ind, f.eks som en almindelig medarbejder, så skal vedkommende ikke have adgang til at kunne skrive rapporter ud, oprette nye medarbejdere osv. Mit ønske var, at når en sådan bruger loggede sig ind, så skulle vedkommende slet ikke kunne se knapperne for disse funktioner, imens en administrator skulle have adgang til det hele (Alle knapper mm.)

Så vidt jeg kan se, så er det nok mest "programmatic security" jeg skal bruge.
Avatar billede arne_v Ekspert
17. maj 2003 - 14:48 #6
Er det en apllikation eller en web applikation - er bruger interfacet
et selvstændigt program eller browser ?
Avatar billede arne_v Ekspert
17. maj 2003 - 14:49 #7
At restricte funktioner på den måde du beskriver bør godt kunne
laves både declarativt og programmeret i kode.
Avatar billede mogli Nybegynder
17. maj 2003 - 14:52 #8
Takker for de hurtige svar - Det er i en java applikation det skal laves, dvs et selvstændigt program
Avatar billede mogli Nybegynder
17. maj 2003 - 14:53 #9
og ville være bedste hvis det blev lavet deklarativt, hvis jeg har forstået det på den måde at det er foruddefineret i f.eks en db at brugeren har rettigheder til det og det.
Avatar billede arne_v Ekspert
17. maj 2003 - 15:06 #10
Deklarativt er kun for web applikationer, så det kan vi godt glemme alt
om når det er en applikation.

Men jeg ville bare forklare lidt om mulighederne.
Avatar billede arne_v Ekspert
17. maj 2003 - 15:08 #11
Hvis vi skal skyde os lidt mere ind på hvad du har brug for:

1)  Vil du igang med JAAS ? (min anbefaling vil være at du ikke bruger
    JAAS medmindre du har fleres års Java programemrings erfaring)

2)  Vil du have forslag til tabel-struktur ?

3)  Vil du have forslag til kode til at læse fra den tabel ?

4)  Eller noget helt tredie ?
Avatar billede mogli Nybegynder
17. maj 2003 - 15:09 #12
tror at jeg vil lukke spg. nu og så undersøge mulighederne iblandt de nævnte, men takker mange gange for de muligheder der kom frem. og hvis det går helt galt, så kan jeg jo altid vende tilbage igen.
Avatar billede mogli Nybegynder
17. maj 2003 - 15:11 #13
Der svarede jeg vist lidt hurtigt:-) jeg kunne godt tænke mig at få lidt forslag til hvordan jeg skal læse koden fra tabellen. behøves ikke hvordan jeg får adgang og det, mere bare hvordan jeg kan udelukke nogle funktioner for brugeren. Spg er hermed ½ åbent igen
Avatar billede arne_v Ekspert
17. maj 2003 - 15:16 #14
Hvis du vil køre level orienteret, så laver du (som Disky beskrev)
en tabel med:

username
password
level

ved login verificerer du at username+password er validt og gemmer
enten brugernavn eller level (i sidste tilfælde slipper du for
at slå level op med brugernavn hver gang der skal checkes).

Hver gang du skal checke adgang sammenligner du så level med det
krævede mindste level.
Avatar billede arne_v Ekspert
17. maj 2003 - 15:19 #15
Hvis du vil køre matrix orienteret så laver du to tabeller:

username
password

og

username
role

[pointen er at et brugernavn kan have flere roller]

ved login verificerer du at username/password er validt
og gemmer enten brugernavn eller alle roller for brugernavn (i sidste
tilfælde slipper du for at slå roller op hver gang der skal checkes).

Hver gang du skal checke adgang undersøger du bare om brugeren
har den krævede rolle.
Avatar billede mogli Nybegynder
17. maj 2003 - 15:19 #16
dvs at jeg oppe i gui skal tjekke for hver knap der skal bruges, om den har "tilladelse" til at blive vist, for så var det nogenlunde samme ide jeg havde tænkt mig - Mente bare at det ville blive lidt omsonst
Avatar billede arne_v Ekspert
17. maj 2003 - 15:28 #17
Det kan godt struktures lidt smart.

Hvis nu du laver en klasse:

public class AccessCheck {
    private static String[] roles;
    public static void setRoles(String[] roles) {
        this.roles = roles;
    }
    public static boolean isRole(String role) {
        for(int i = 0; i < roles.length; i++) {
            if(roles[i].equals(role)) {
                return true;
            }
        }
        return false;
    }
}

så kan i dit login modul kalde:

AccessCheck.setRoles(roles);

og i forskellige moduler kalde:

if(AccessCheck.isRole("Administrator")) {

eller

if(AccessCheck.isRole("User")) {
Avatar billede arne_v Ekspert
17. maj 2003 - 15:29 #18
(det ville være lidt pænere med en singleton i.s.f. static metoder men ...)
Avatar billede arne_v Ekspert
17. maj 2003 - 15:31 #19
Ved login laver checker du så først username og password
om de matcher og derefter henter du rollerne.

Database adgang er formentlig med JDBC.
Avatar billede mogli Nybegynder
17. maj 2003 - 15:33 #20
Det er vist en ok måde at gøre det på, så er det bare om jeg kan få det til at køre i mit eksempel, men der er vel ikke andet for end at jeg må prøve mig lidt frem med de ovenstående eksempler, dog tror jeg også at den bliver lavet til en singletonklasse. Men takker mange gange for hjælpen.
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



IT-JOB

Udviklings- og Forenklingsstyrelsen

Business Analyst med flair for test

Udviklings- og Forenklingsstyrelsen

Scrum Master