首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony 6多重UserRoles one LoginForm

Symfony 6多重UserRoles one LoginForm
EN

Stack Overflow用户
提问于 2022-04-28 11:07:08
回答 1查看 334关注 0票数 1

我有两个用户角色,我希望他们用一个/相同的登录表单访问后端。(security.yamlchain_providers ?)

只使用一个实体即可登录(security.yaml:entity )

为了避免管理员和用户使用相同的电子邮件的问题,我会添加一个角色选择字段(这是最大的问题,如何使用symfony,CustomFormType ?)

实体:AdminEntity UserEntity

角色:ROLE_ADMIN ROLE_USER

后端:/backend后端登录:/backend/login

EN

回答 1

Stack Overflow用户

发布于 2022-05-26 12:25:57

我不确定我是否完全理解你的问题,但我认为你需要一个不同的方法为你的项目。

实际上,在UserEntity中,我建议扩展UserInterface和PasswordAuthenticatedUserInterface。

代码语言:javascript
复制
class User implements UserInterface, PasswordAuthenticatedUserInterface
代码语言:javascript
复制
# UserInterface.php
interface UserInterface
{
    public function getRoles(): array;

正如您可能看到的,角色是一个字符串数组,您可以使用值ROLE_ADMINROLE_USER填充这些字符串。

有了这些信息,您可以通过多种方式分离功能。

  • 您可以检查当前用户是否是Admin,并显示每个功能的管理操作。

这意味着您将有代码检查角色,并根据用户的角色决定显示或执行什么,从而允许更大的灵活性,因为您可以及时添加更多的角色。这也意味着您必须以一种聪明的方式规划角色能够或不能完成的任务。

admins

  • 通过不同的路径将整个项目分隔开来,为usersusers建立不同的防火墙

代码语言:javascript
复制
- `Admin` ^/backend/admin
- `Users` ^/backend

因此,您可能有不同的登录路径,但这并不意味着您需要重复代码。这意味着您必须检查这个用户目前在哪里。属性路由可以接受路径的字符串或数组。

  • Admin ^/backend/admin/login
  • Users ^/backend/login

所以,我不在乎您选择的方法,主要目标总是永远不重复代码或逻辑。

我希望这能帮到你

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72042605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档