如何在symfony 3中为easyadmin和客户端页面创建单独的登录页
问题描述:
我已经在Symfony 3中安装了FOSUser包和Easyadmin。一切正常。如何在symfony 3中为easyadmin和客户端页面创建单独的登录页
仅供参考,我的easyadmin路线是/admin
。
如果用户未登录并将访问/admin
路由,它将被重定向到/login
,这是配置的FOSUser软件包。
我想要的是有一个单独的页面管理员登录和客户端登录。
假设,如果用户(未登录)将访问/admin
它应该被重定向到管理登录是/admin/login
。如果用户将访问客户端的/dashboard
,则应将其重定向到/login
。
下面是我的security.yml配置:
#From security.yml file
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
# if you are using Symfony < 2.8, use the following config instead:
# csrf_provider: form.csrf_provider
login_path: /login
check_path: /login_check
always_use_default_target_path: false
default_target_path: /dashboard
下面是我的routing.yml配置:
#routing.yml
easy_admin_bundle:
resource: "@EasyAdminBundle/Controller/"
type: annotation
prefix: /admin
有谁知道?
答
更改我的设置后,我解决了我的问题。
我在我的路由上的fos_user下添加了prefix:/admin
。意思是,登录将被重定向到/admin
,但之后,由于用户尚未登录,它将推回到/admin/login
uri。
# app/config/routing.yml
fos_user:
prefix: /admin
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
#Easy admin bundle
easy_admin_bundle:
resource: "@EasyAdminBundle/Controller/"
type: annotation
prefix: /admin
此外,这里是我的security.yml配置。确保提供商是fos_userbundle
。
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin_area:
pattern: ^/admin
anonymous: ~
provider: fos_userbundle
form_login:
default_target_path: /admin
check_path: /admin/login_check
login_path: /admin/login
remember_me: true
logout:
path: /admin/logout
target: /admin
main:
anonymous: ~
如果你添加一些权限,用户表,那么你可以使用一个登录页面做到这一点,让PHP弄清楚,如果它是一个用户或管理员 – Jorn
我使用fosUser束。如果我试图访问'/ admin',它会自动重定向到'/ login'。你有关于这个的一些教程吗?谢谢 – zms
我不知道fosUser包。但是我要说的是,如果你检查用户权限,你只需要'/ login'。否则,可能会有一种方式,但不是我可以帮助你的一种方式,对不起。 – Jorn