gpt4 book ai didi

symfony - 如何在 Symfony2 中使用两个不同的表进行身份验证

转载 作者:行者123 更新时间:2023-12-02 17:06:14 25 4
gpt4 key购买 nike

我的这个项目中有两个表。一张表用于站点管理员,存储所有管理员用户的详细信息,另一张表存储站点客户端的所有登录数据。

目前,我可以使用管理员详细信息登录。但是,我现在尝试使用客户详细信息登录,但似乎不起作用。到目前为止,当用户单击链接时,它将转到/clientarea/login。此页面加载良好。但是当我尝试登录时出现错误。

我收到的错误是这样的:

Unable to find the controller for path "/clientarea/login_check". Maybe you forgot to add the matching route in your routing configuration?

在我的 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

这是 Controller 中的代码。登录和 clientlogin 函数的代码是相同的,唯一不同的是它们指向的 twig 文件:

$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。

我做错了什么?

最佳答案

我已经设法让它工作了,但是是以一种非常基本的方式。由于截止日期,我没有时间让登录页面看起来漂亮。

但这是代码:

    client_area:
pattern: ^/clientarea
anonymous: ~
provider: client_db
http_basic:
realm: "Secured Client Area"

基本上,您可以拥有多个表中的用户。但是,我仍然无法使用正确的登录表单使其工作。但基本的 HTTP 登录框对于我正在做的事情来说同样有效。

关于symfony - 如何在 Symfony2 中使用两个不同的表进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7747917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com