IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

Accés par utilisateurs


Sujet :

Sécurité

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 169
    Points : 47
    Points
    47
    Par défaut Accés par utilisateurs
    Bonjour,

    Je bloque sur un petit problème. J'ai récupéré un code sur internet qui fonctionne bien pour créer différentes accés avec mdp et login.

    Par contre, la personne à mis ce code avec un accès avec différents droits. Mais cette option à été abandonée car la personne sur le forum n'en avait pas besoin. Or je souhaiterai l'utiliser. Mais je ne sais pas comment récupérer ma donnée "DROITS".

    Comment la récupérer a partir de ce code, comment je peux l'utiliser ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Private Sub Commande4_Click()
     
    Me.Requery
     
    Dim sql As String
    Dim rs As DAO.Recordset
    Static i As Byte
     
    'Créé une chaine avec les valeurs des champs du formulaire
    sql = "SELECT * FROM Table_Login WHERE Login = '" & Me.Login & "' AND PASWD ='" & Me.Motdepasse & "';"
    Set rs = CurrentDb.OpenRecordset(sql)
     
    ' Vérifie la concordance pour ouvrir le formulaire FormulaireAOuvrir ou affiche Incorrect
    If Not rs.EOF Then
    DoCmd.OpenForm "FormulaireAOuvrir", acNormal, , , , acWindowNormal
    DoCmd.Close acForm, "F_Entree"
    User_id = rs("LOGIN").Value
    User_droits = rs("DROITS").Value
    Else
    MsgBox "(Identifiant, Mot de Passe) incorrect ", vbInformation, "Connexion"
    i = i + 1
    End If
    'Dépassement du nombre d'essais autorisés 3
    If i = 3 Then
    MsgBox "Vous avez dépassé le nombre de tentatives autorisés", vbCritical
    DoCmd.Quit
    End If
     
    End Sub
    Dans un module User:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Pour y avoir accès partout
    Public User_droits As String
    Public User_id As String
    Quelqu'un sait comment s'en servir ?

    Merci

  2. #2
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Salut Phoenix311,

    Il faut que tu définisses des valeurs pour le champ "droits".
    De là, une fois l'utilisateur identifié, la variable globale User_droits contiendra cette valeur. Il te suffira à chaque fois que nécessaire de vérifier cette variable pour autoriser un traitement.

    il est recommandé d'utiliser le code binaire pour définir les valeurs pour ainsi utiliser un mask pour extraire les différents droits.
    ex:
    01b (= 1) modification
    10b (= 2) suppression
    donc 11b (= 3) : modification et suppression.
    pour le test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (User_droits and 2) then 'code suppression

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 169
    Points : 47
    Points
    47
    Par défaut
    Merci beaucoup pour ta réponse c'est un peu plus clair. J ai pas bien saisi l'histoire de binaire, mask....

    Et surtout comment faire pour me servir de cette valeur stocké? Je peux la mettre dans une textbox ? Je peux l'utiliser autrement ? Je ne sais pas bien comment m'en servir...

    Merci ;-)

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 711
    Points : 43 803
    Points
    43 803
    Par défaut masque binaire
    Pour comprendre le binaire et le masquage:

    on compte en système décimal c'est à dire base 10 : après 10 valeurs, on ajoute 1 dizaine : 1 rang . exemple 9+1=10 on ajoute le 1 des dizaines et remet l'unité à 0.

    Pour le binaire, base 2 c'est le même principe après 2 valeurs on ajoute un rang et on remet l'unité à 0. 1+1=10 en base 2 équivalent à 1+1=2 en décimal. Comme il n"y a que 2 valeurs possible pour l'unité ( base 2 ), on ajoute un rang après. Autre exemple : 2+1=3 décimal - 10+1=11 binaire.

    En informatique/électronique on utilise la base 2 car 0 le courant ne passe pas, 1 le courant passe.

    Un octet correspond à 8 bits, soit 8 fils en électronique avec soit du courant dedans ou non. Avec 8 bits on peut coder 256 valeurs différentes ( de 0 à 255 en binaire 255=11111111)

    masquer un bit veut dire forcer ce bits à 0. La valeur en décimal n'importe pas, ce qui importe c'est que tel bit soit à 0 ou à 1.

    Dans le cas cité, on voit tout de suite que 3 correspond aux 2 bits de poids faible ( bits de poids faible=les bits les plus à droite poids faible->valeur la plus petite - les bits les plus à gauche sont les bits de fort - ça c'est pour les termes utilisés) sont à 1 sans nécessité de calcul ou conversion en décimal.

    Ce système permet donc de stocker 8 variables oui/non par exemple dans 1 octet. C'est surtout utilisé en langage machine ou le masquage ou le test d'un bit est très rapide, et très utile dans le cas ou il faut prendre en compte plusieurs bits différents ou on masque les bits ne nous intéressant pas pour faire des tests. Dans le cas d'access ça n'a pas plus ou moins d’intérêt que d'utiliser 2 variables/champs numériques différents ou de considérer que si le champ contenant les autorisations vaut 15 ça veut dire autorisé à modifier, et que il vaut 34 ça veut dire toutes autorisations, et 0 aucun accès par exemple.

    Le système employé est un peu une convention

    Access n'est pas adapté pour travailler en binaire, on utilise donc les valeurs décimales.

    dans l'exemple : if (User_droits and 2)

    if test le contenu entre parenthèse, vu qu'il ne s'agit pas d'un if ()=x, on peut considérer que if (User_droits and 2) correspond à if (User_droits and 2)=true (true=vrai ou =1 pour shématiser)

    ensuite User_droits and 2 signifie qu'on masque la valeur de user_droits
    supposons que user_droits vaut 3
    3 and 2 en décimal, 00000011 and 00000010 en binaire
    and correspond au masquage ( donc mise à 0 du bit ), pour forcer in bit à 1 on aurait utilisé or.
    si tu regardes le dernier bit il est à 0, c'est la différence entre les 2 valeurs

    l'opération se fait bit à bit ( traitement 1er bit valeur 1 avec 1er bit valeur 2, etc ...)

    pour faire un and on fait 1 multiplication entre les 2 bits
    dans notre cas 1x0=0 donc le bit sera bien mis à 0
    si les 2 bits avait été à 1 on aurait eu 1x1=1
    Si un des 2 bits est à 0, cela masque.
    donc 00000011 and 00000010 donnera 00000010 donc 2 dans le cas cela signifie suppression autorisé ( 2->10b->suppression) dans ce cas on teste la suppression et rien d'autre

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut chrtophe,

    Citation Envoyé par Phoenix311
    comment faire pour me servir de cette valeur stocké
    c'est une variable globale:
    Citation Envoyé par Phoenix311
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'Pour y avoir accès partout
    partout où il y a du code : User_droits sera défini (après exécution de l'identification)
    dans une textbox, oui: par code. sinon rattaché au champ <droits> de la table login auquel User_droits est initialisée.
    le binaire n'a rien d'obligatoire mais c'est plus 'simple' avec son système de mask de faire les controles et éditions que de le faire à partir de valeur décimale ou chaine de caractère.

Discussions similaires

  1. [NAS] Acces par utilisateur
    Par freemanbubu dans le forum Windows XP
    Réponses: 0
    Dernier message: 19/12/2008, 13h44
  2. Réponses: 2
    Dernier message: 02/05/2007, 17h15
  3. [Serveur de fichier] Acces par utilisateur
    Par T0xF0x dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 25/04/2007, 18h02
  4. Gestion accès au fichier par utilisateur
    Par Invité dans le forum Langage
    Réponses: 11
    Dernier message: 18/04/2006, 12h26
  5. autorisation et acces a une base par utilisateur
    Par azde7015 dans le forum Access
    Réponses: 1
    Dernier message: 09/02/2006, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo