How to protect entire pages except the login page in symfony2?

I want the whole site to be protected through login with FOSUserBundle. I tried installing security.yml like this

security: encoders: Symfony\Component\Security\Core\User\User: plaintext FOS\UserBundle\Model\UserInterface: sha512 role_hierarchy: ROLE_ADMIN: ROLE_USER ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] providers: fos_userbundle: id: fos_user.user_manager firewalls: main: pattern: ^/ form_login: check_path: /login_check login_path: /login provider: fos_userbundle always_use_default_target_path: true default_target_path: /dashboard logout: path: /logout target: / anonymous: ~ #http_basic: # realm: "Secured Demo Area" access_control: - { path: ^/demo/secured/hello/admin/, roles: ROLE_ADMIN } #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https } 

But then I do not know what to install in config.yml this is my config.yml

  imports: - { resource: parameters.yml } - { resource: security.yml } framework: #esi: ~ translator: ~ secret: %secret% router: resource: "%kernel.root_dir%/config/routing.yml" strict_requirements: ~ form: ~ csrf_protection: ~ validation: { enable_annotations: true } templating: engines: ['twig'] #assets_version: SomeVersionScheme default_locale: "%locale%" trusted_proxies: ~ session: ~ fragments: ~ http_method_override: true # Twig Configuration twig: debug: %kernel.debug% strict_variables: %kernel.debug% # Assetic Configuration assetic: debug: %kernel.debug% use_controller: false bundles: [ ] #java: /usr/bin/java filters: cssrewrite: ~ #closure: # jar: %kernel.root_dir%/Resources/java/compiler.jar #yui_css: # jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar # Doctrine Configuration doctrine: dbal: driver: %database_driver% host: %database_host% port: %database_port% dbname: %database_name% user: %database_user% password: %database_password% charset: UTF8 # if using pdo_sqlite as your database driver, add the path in parameters.yml # eg database_path: %kernel.root_dir%/data/data.db3 # path: %database_path% orm: auto_generate_proxy_classes: %kernel.debug% auto_mapping: true # Swiftmailer Configuration swiftmailer: transport: %mailer_transport% host: %mailer_host% username: %mailer_user% password: %mailer_password% spool: { type: memory } fos_user: db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel' firewall_name: main user_class: Dashboard\UserBundle\Entity\User 

and this is my controller

 <?php namespace Proposals\ProposalsBundle\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Proposals\ProposalsBundle\Entity\Proposals; use Proposals\ProposalsBundle\Form\ProposalsType; /** * Proposals controller. * */ class ProposalsController extends Controller { /** * Lists all Proposals entities. * */ public function indexAction() { $em = $this->getDoctrine()->getManager(); $entities = $em->getRepository('ProposalsProposalsBundle:Proposals')->findAll(); return $this->render('ProposalsProposalsBundle:Proposals:index.html.twig', array( 'entities' => $entities, )); } 

When I open any page, you do not check whether the user is registered or not. I want each page to be protected by logging in if the user is logged in, then each page is opened if the user is not logged in, and then the page is not displayed or redirected to login.any help appriciated

+4
source share
2 answers

Every time everyone is the same, no one casts an eye on the documentation. Wayne But for your spam, you should not receive an answer, but that would be unfair ^^

 security: firewalls: main: pattern: ^/ # other settings anonymous: true access_control: - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/, role: ROLE_USER } 
+15
source

to go to this URL localhost / QuickBacklog / web / app_dev.php / dashboard
you should add this to security.yml

 firewalls: main: pattern: ^/ form_login: provider: fos_userbundle default_target_path: /dashboard/ logout: ........ invalidate_session: false anonymous: ~ 

In the routing file

 applicationlogin_success: pattern: /dashboard/ defaults: { _controller: SampleBundle:Default:FrontPage } 

USING default_target_path: ROUTING_PATTERN
u will redirect it ...

+2
source

Source: https://habr.com/ru/post/1498528/


All Articles