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

Symfony PHP Discussion :

problème sécurisation d'un module (réservé aux membres) [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Par défaut problème sécurisation d'un module (réservé aux membres)
    Bonjour,

    J'ai créé un module "ads" pour créer la création d'annonces.Mais je souhaite restreindre l'accès aux membres. Sachant que je n'ai pas utilisé les plugins symfony (sfGuard,sfDoctrineGuard..), j'ai reussit à sécurisé la partie backend (gestion d'administration) en modifiant :
    security.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    all:
      is_secure: on
      credentials: admin
    Et pour que l'utilisateur soit automatiquement redirigé sur l'espace d'identification s'il n'est pas ou plus connecté.
    Pour cela, j'ai modifié le fichier settings.yml en ajoutant à la fin de l'instruction all:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    .actions:  
        login_module:           utilisateur   
        login_action:            login
    Et créer une action login dans le module membres du backend qui se contentera de rediriger sur le frontend.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function executeLogin(sfWebRequest $request)
        {
            $this->redirect('/frontend_dev.php/'.strtolower(substr($this->getUser()->getCulture(),0,2)).'/login.html');
        }

    Le problème :
    Quand je voulais faire pareil pour sécuriser le module "ads" dans le frontend,
    j'ai créé le fichier settings.yml et security.yml dans \apps\frontend\modules\ads\config en mettant dans :

    settings.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    all:
     .actions:
        login_module:           ads   
        login_action:           login
    et

    security.yml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    new:
      is_secure: on
      credentials: member
    edit:
      is_secure: on
      credentials: member
    show:
      is_secure: on
      credentials: member
    et bien sur ajouter dans adsAction.class.php pour la redirection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function executeLogin(sfWebRequest $request)
        {
            $this->redirect('/frontend_dev.php/'.strtolower(substr($this->getUser()->getCulture(),0,2)).'/login.html');
        }

    Ca marche pas !! on me renvoie toujours vers "ads/new" requires authentication, forwarding to "default/login" donc ca m'affiche la page par défaut de symfony qui dit : Login Required This page is not public.

    Sachant que j'ai redefinis le settings et mon routing.yml est :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    ads:
      class:   sfDoctrineRouteCollection
      options:  
        model: Annonce
        module:               ads
        prefix_path:          /ads
        column:               id
        with_wildcard_routes: true	
    ads_show_user:
      url:   /ads/:ville_slug/:id/:TitreAnnonce_slug
      class:   sfDoctrineRoute
      options: { model: Annonce, type: object }
      param:   { module: ads, action: show }
      requirements:
       id: \d+
       sf_method: [get]    
    login:
      url: /:sf_culture/login.html
      param: { module: users, action: login }
      requirements:
        sf_culture: (?:fr|en)
     
    #share:
    #  url: /:sf_culture/share.html
    #  param: { module: bureau, action: new }
    #  requirements:
     #   sf_culture: (?:fr|en)
     
    disconnect:
      url: /:sf_culture/disconnect.html
      param: { module: users, action: deco }
      requirements:
        sf_culture: (?:fr|en)
     
    checkLogin:
      url: /:sf_culture/check_login.html
      param: { module: users, action: doLogin }
      requirements:
        sf_culture: (?:fr|en)
     
    passLost:
      url: /:sf_culture/password_lost.html
      param: { module: users, action: passPerdu }
      requirements:
        sf_culture: (?:fr|en)
     
    register:
        url: /:sf_culture/register.html
        param: { module: users, action: new }
        requirements:
        sf_culture: (?:fr|en)
     
    users:
      class:   sfDoctrineRouteCollection
      options: { model: users }
     
     
    localized_homepage:
      url:   /:sf_culture/
      param: { module: main, action: index }
      requirements:
        sf_culture: (?:fr|en)
     
    homepage:
      url:   /
      param: { module: ads, action: index }
     
    default_index:
      url:   /:module
      param: { action: index }
     
    default:
      url:   /:module/:action/*
    J'ai essayé de supprimer la route par defaut mais ca bug en me disant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Unable to find a matching route to generate url for params "array ( 'action' => 'login', 'module' => 'default',)"
    .

    Je veux être rediriger vers le login.html définis dans la fonction de redirection et apparement le settings.yml n'est pas pris en compte.



    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Par défaut
    Si tu veux mettre la sécurité pour tout le module autant mettre dans ton fichier security.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    all:
      is_secure: on
      credentials: member
    Ensuite, tu n'as pas à avoir de fichier settings.yml dans le dossier config du module. Il suffit de modifier ton fichier settings.yml contenu dans aaps/frontend/config:
    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
    all:
      .settings:
        enabled_modules: [default, sfGuardAuth]
        i18n: true
        default_culture:        fr
     
        # Form security secret (CSRF protection)
        csrf_secret:            UniqueSecret1
     
        # Output escaping settings
        escaping_strategy:      true
        escaping_method:        ESC_SPECIALCHARS
     
        # Enable the database manager
        use_database:           true
     
      .actions:
        login_module:    sfGuardAuth
        login_action:    signin

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Par défaut
    Merci beaucoup maintenant ça marche mais sans rajouter sfGuard.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Par défaut
    ok parfait alors!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. L'envoi de MP est-il réservé aux membres confirmés ?
    Par Oppenheimer dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 4
    Dernier message: 22/09/2013, 10h32
  2. Réponses: 0
    Dernier message: 04/05/2012, 20h59
  3. Réponses: 16
    Dernier message: 17/03/2007, 17h31
  4. Heritage accès aux membres de bases
    Par MAGNUM_HEAD dans le forum C++
    Réponses: 1
    Dernier message: 16/11/2004, 16h41

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