我的登录表单没有';我不在Symfony 2工作
我正在处理我的公文包,我正在尝试添加一个表单供我登录使用我的CMS。我用的是symfony2。这是我在遇到问题之前采取的步骤(我将在后面解释) 首先,我阅读了Symfony网站()上关于安全性的文档。在这一点上,它起作用了,如果我试图访问任何前面有admin/的url,它会问我一个usename和密码。我输入的用户名和密码是加密的。到目前为止,一切都很顺利 以下是我目前的配置: 我的应用程序的路由器:我的登录表单没有';我不在Symfony 2工作,symfony,Symfony,我正在处理我的公文包,我正在尝试添加一个表单供我登录使用我的CMS。我用的是symfony2。这是我在遇到问题之前采取的步骤(我将在后面解释) 首先,我阅读了Symfony网站()上关于安全性的文档。在这一点上,它起作用了,如果我试图访问任何前面有admin/的url,它会问我一个usename和密码。我输入的用户名和密码是加密的。到目前为止,一切都很顺利 以下是我目前的配置: 我的应用程序的路由器: public: resource: "@PublicBundle/Resou
public:
resource: "@PublicBundle/Resources/config/routing.yml"
prefix: /
admin:
resource: "@AdminBundle/Resources/config/routing.yml"
prefix: /admin
app:
resource: "@AppBundle/Controller/"
type: annotation
我的管理包的路由器:
admin:
path: /
defaults: { _controller: AdminBundle:Admin:index }
chemin_test:
path: /test
defaults: { _controller: AdminBundle:Admin:test }
admin:
path: /
defaults: { _controller: AdminBundle:Securite:login }
admin_login_check:
path: /login_check
defaults: { _controller: AdminBundle:Securite:loginCheck }
chemin_test:
path: /test
defaults: { _controller: AdminBundle:Admin:test }
我的security.ynk文件:
security:
providers:
in_memory:
memory:
users:
admin:
password: XXXXXXXXXXXXXXXXXXXX
roles: 'ROLE_ADMIN'
firewalls:
dev:
pattern: ^/(_(profiler|wdt|error)|css|images|js)/
security: false
default:
anonymous: ~
http_basic: ~
encoders:
Symfony\Component\Security\Core\User\User:
algorithm: bcrypt
cost: 12
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
现在是它不起作用的部分。我读书。以下是更改的文件:
Security.yml:
security:
providers:
in_memory:
memory:
users:
admin:
password: XXXXXXXXXXXXXXXXX
roles: 'ROLE_ADMIN'
firewalls:
dev:
pattern: ^/(_(profiler|wdt|error)|css|images|js)/
security: false
default:
anonymous: ~
http_basic: ~
form_login:
login_path: /admin/
check_path: /admin/login_check
encoders:
Symfony\Component\Security\Core\User\User:
algorithm: bcrypt
cost: 12
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
我的管理包的路由器:
admin:
path: /
defaults: { _controller: AdminBundle:Admin:index }
chemin_test:
path: /test
defaults: { _controller: AdminBundle:Admin:test }
admin:
path: /
defaults: { _controller: AdminBundle:Securite:login }
admin_login_check:
path: /login_check
defaults: { _controller: AdminBundle:Securite:loginCheck }
chemin_test:
path: /test
defaults: { _controller: AdminBundle:Admin:test }
我的管理员和安全管理员:
管理员:
<?php
namespace AdminBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class AdminController extends Controller
{
public function indexAction()
{
return new Response('<html><body>Hello!</body></html>');
}
public function testAction()
{
return new Response('<html><body>Hello!</body></html>');
}
}
我相信你的问题在这里:
default:
anonymous: ~
http_basic: ~
form_login:
login_path: /admin/
check_path: /admin/login_check
登录和登录检查路径不应在admin下,因为只有登录的用户才能进入/admin下的页面。。。
因此,发生的情况是,您尝试转到/admin页面,它将永远加载尝试转到/admin/login,但他是不允许的,因为用户未登录并继续尝试。。直到他抛出错误,认为这是一个无限循环
为login path指定您拥有的登录路径,并检查\u path login\u check
default:
anonymous: ~
http_basic: ~
form_login:
login_path: login_route
check_path: login_check
我尝试了您的解决方案,并将我的路由名称更改为:login\u route:path:/defaults:{{u controller:AdminBundle:Securite:login}login\u check:path:/login\u check defaults:{{u controller:AdminBundle:Securite:loginCheck}我无法工作,它仍然给我同样的问题可能你的routing.yml在/admin下进行登录路径和登录检查?我找到了解决方案。就像你说的,我的登录路径和登录检查都在/admin之后,所以ot一直在重定向,因为我告诉安全字段如果他找到admin/就重定向。解决方案就是让login和login\u检查不在admin/之后。在我的例子中,我决定只为securityController和登录表单创建一个connexion包。谢谢你的帮助,是你的提示让我真正理解了我的问题!