我在这个项目中有两个表。一个表用于存储所有管理员用户详细信息的站点管理员,另一个表存储客户端到该站点的所有登录数据。如何在Symfony2中使用两个不同的表进行身份验证
目前,我可以使用管理员详细信息登录。但是,我现在正在尝试登录客户端的详细信息,但似乎没有工作。到目前为止,当用户点击一个链接时,它会去/ clientarea /登录。这个页面加载正常。但是,当我尝试登录时,出现错误。
我得到的错误是这样的:
无法找到路径 “/ clientarea/login_check” 控制器。也许你忘了在路由配置中添加匹配路由?
在我security.yml文件,我有以下代码:(顺便说一句,我使用的是明文仅用于开发,它会当它实时更改):
providers:
admin_db:
entity: { class: Shout\AdminBundle\Entity\User, property: username }
client_db:
entity: { class: Shout\AdminBundle\Entity\Userclients, property: username }
encoders:
Shout\AdminBundle\Entity\User:
algorithm: plaintext
Shout\AdminBundle\Entity\Userclients:
algorithm: plaintext
firewalls:
secured_area:
pattern: ^/
anonymous: ~
provider: admin_db
form_login:
check_path: /login_check
login_path: /login
logout:
path: /logout
target: /index
client_area:
pattern: ^/
anonymous: ~
provider: client_db
form_login:
check_path: /clientarea/login_check
login_path: /clientarea/login
logout:
path: /clientarea/logout
target: /index
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/clientarea/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/clientarea, roles: ROLE_USER }
在我的routing.yml中,我有这样的代码:
login:
pattern: /login
defaults: { _controller: ShoutAdminBundle:Security:login }
login_check:
pattern: /login_check
logout:
pattern: /logout
clientlogin:
pattern: /clientarea/login
defaults: { _controller: ShoutAdminBundle:Security:clientlogin }
clientlogin_check:
pattern: /clientarea/login_check
clientlogout:
pattern: /clientarea/logout
这里是控制器中的代码。该代码是登录和ClientLogin的功能是相同的,那就是唯一不同的是它们指向的树枝文件:
$request = $this->getRequest();
$session = $request->getSession();
// get the login error if there is one
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
} else {
$error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
}
return $this->render('ShoutAdminBundle:Security:clientlogin.html.twig', array(
// last username entered by the user
'last_username' => $session->get(SecurityContext::LAST_USERNAME),
'error' => $error,
));
客户端登录表单点的行动路径clientlogin_check。
我在做什么错?