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