Symfony安全防火墙

Symfony安全防火墙,symfony,Symfony,我正在用这个框架启动一个web应用程序。我对第一部分有个问题,登录: 我有两个实体: 使用者 我不知道在这一点上我是否是对的。有两种类型的用户:用户和客户端chain_provider在这两种用户之间进行登录是正确的 用户路由文件 配置路由文件 最后是UsersBundle控制器: <?php namespace app\UsersBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; u

我正在用这个框架启动一个web应用程序。我对第一部分有个问题,登录: 我有两个实体:

使用者

我不知道在这一点上我是否是对的。有两种类型的用户:用户和客户端chain_provider在这两种用户之间进行登录是正确的

用户路由文件

配置路由文件

最后是UsersBundle控制器:

<?php

namespace app\UsersBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\SecurityContext;

class DefaultController extends Controller
{
    public function homeAction(){
        return $this->render('UsuariosBundle:Default:login.html.twig');
    }

    public function loginAction(Request $peticion){

    }
}
如果我在浏览器localhost/app/web/app_dev.php中写入,它会将我重定向到localhost/app/web/app_dev.php/users/login,但我得到了错误302,并且它显示重定向太多。如果我打开chrome控制台,我会看到每3秒钟打开很多login.php文件

看起来您忘记了匿名~参数。 更改您的代码:

frontend:
            pattern:    ^/*
            provider:   chain_provider
            form_login:
                login_path: users_login
                check_path: users_login_check
            logout:
                path: users_logout
就像这样:

frontend:
    anonymous: ~
    pattern:    ^/
    provider:   chain_provider
        form_login:
            login_path: users_login
            check_path: users_login_check
        logout:
            path: users_logout

我想,匿名参数可以解决您的问题。

独立测试每个部分,验证是否正常?将安全性:false添加到防火墙“前端”并尝试登录。另外,您可能需要为您的防火墙“前端”指定一个提供商。非常感谢您,我误解了该文档,我想我必须删除匿名:~才能通过登录访问所有页面,但必须在没有用户登录的情况下访问登录。是我的错。
users_login:
    pattern:  /login
    defaults: { _controller: UsersBundle:Default:login }

users_login_check:
    pattern:  /login_check

users_logout:
    pattern:   /logout
users:
    resource: "@UsersBundle/Resources/config/routing.yml"
    prefix:   /users
home:      
    path:     /users/login
    defaults: { _controller:UsersBundle:Default:home}   

_home:
    path:     /
    defaults: { _controller FrameworkBundle:Redirect:redirect, route: home }
<?php

namespace app\UsersBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\SecurityContext;

class DefaultController extends Controller
{
    public function homeAction(){
        return $this->render('UsuariosBundle:Default:login.html.twig');
    }

    public function loginAction(Request $peticion){

    }
}
frontend:
            pattern:    ^/*
            provider:   chain_provider
            form_login:
                login_path: users_login
                check_path: users_login_check
            logout:
                path: users_logout
frontend:
    anonymous: ~
    pattern:    ^/
    provider:   chain_provider
        form_login:
            login_path: users_login
            check_path: users_login_check
        logout:
            path: users_logout