使用 symfony 4 创建后台和前台应用程序的最佳方式
Best Way to create a back and front office application with symfony 4
我正在创建一个有前台和后台的新应用程序,我的后台办公室提供了创建社会的可能性,而那些在后台创建的社会应该提供在 url前面,不知道怎么弄,..
我试过像这样修改我的 security.yml =>
access_control:
- { path: ^/\w+/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login_admin, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
- { path: ^/admin, roles: ROLE_ADMIN }
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
我目前正在尝试识别前面 url 中的社会,就像这样(在我的 config/routes.yaml 中)=>
salarie_index:
path: /{_clientname}/*
它工作正常,但是,当我尝试访问我的 bak 办公室时,它现在被认为是一个社会 >__<"
我希望能够在我的路由中指定如果客户端名称是 "admin",那么它不应该映射到这条路由,...
虽然我不清楚你想要达到什么目的,但你似乎把它复杂化了。是什么让您无法选择不同的路线?
您可以只为您的管理员提供一条路线:/admin
以及贵公司(社会)的另一条路线:/company/{_clientname}
对不起,
我不能这样做,因为我的后台不依赖于公司,这意味着我在 url 中根本不需要公司,而在 url 中则相反前面的,...
事实上,我认为我可以使用那里的配置 =>
routes.yml =>
#index:
# path: /
# controller: App\Controller\DefaultController::index
admin:
resource: "../../src/Controller/Admin/"
type: annotation
prefix: '/admin'
salarie:
resource: "../../src/Controller/Salarie/"
type: annotation
prefix: '/{_clientname}'
requirements:
_clientname: '^((\w+))+'
#_clientname: '^(((?!admin).)(\w+))+'
还有这个 security.yml :
security:
encoders:
App\Entity\User:
algorithm: auto
App\Entity\Salarie:
algorithm: auto
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
providers:
# used to reload user from session & other features (e.g. switch_user)
app_salarie_provider:
entity:
class: App\Entity\Salarie
property: email
app_admin_provider:
entity:
class: App\Entity\AdminUser
property: email
# used to reload user from session & other features (e.g. switch_user)
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|ico|js)/
security: false
admin_area:
anonymous: true
pattern: ^/admin
provider: app_admin_provider
form_login:
provider: app_admin_provider
login_path: login_admin
username_parameter: sign_in[email]
password_parameter: sign_in[password]
check_path: login_check_admin
logout:
path: /logout_admin
target: /admin
salarie:
anonymous: true
pattern: ^/\w+
form_login:
provider: app_salarie_provider
login_path: login_salarie
username_parameter: sign_in[email]
password_parameter: sign_in[password]
check_path: login_check_salarie
logout:
path: /logout
target: /
# activate different ways to authenticate
# https://symfony.com/doc/current/security.html#firewalls-authentication
# https://symfony.com/doc/current/security/impersonating_user.html
# switch_user: true
# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
access_control:
- { path: ^/\w+/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/, roles: ROLE_USER }
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
有了这些文件,我似乎得到了我想要的结果!
无论如何谢谢你的回答,祝你有美好的一天o/
我正在创建一个有前台和后台的新应用程序,我的后台办公室提供了创建社会的可能性,而那些在后台创建的社会应该提供在 url前面,不知道怎么弄,..
我试过像这样修改我的 security.yml =>
access_control:
- { path: ^/\w+/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login_admin, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
- { path: ^/admin, roles: ROLE_ADMIN }
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
我目前正在尝试识别前面 url 中的社会,就像这样(在我的 config/routes.yaml 中)=>
salarie_index:
path: /{_clientname}/*
它工作正常,但是,当我尝试访问我的 bak 办公室时,它现在被认为是一个社会 >__<"
我希望能够在我的路由中指定如果客户端名称是 "admin",那么它不应该映射到这条路由,...
虽然我不清楚你想要达到什么目的,但你似乎把它复杂化了。是什么让您无法选择不同的路线?
您可以只为您的管理员提供一条路线:/admin
以及贵公司(社会)的另一条路线:/company/{_clientname}
对不起,
我不能这样做,因为我的后台不依赖于公司,这意味着我在 url 中根本不需要公司,而在 url 中则相反前面的,...
事实上,我认为我可以使用那里的配置 =>
routes.yml =>
#index:
# path: /
# controller: App\Controller\DefaultController::index
admin:
resource: "../../src/Controller/Admin/"
type: annotation
prefix: '/admin'
salarie:
resource: "../../src/Controller/Salarie/"
type: annotation
prefix: '/{_clientname}'
requirements:
_clientname: '^((\w+))+'
#_clientname: '^(((?!admin).)(\w+))+'
还有这个 security.yml :
security:
encoders:
App\Entity\User:
algorithm: auto
App\Entity\Salarie:
algorithm: auto
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
providers:
# used to reload user from session & other features (e.g. switch_user)
app_salarie_provider:
entity:
class: App\Entity\Salarie
property: email
app_admin_provider:
entity:
class: App\Entity\AdminUser
property: email
# used to reload user from session & other features (e.g. switch_user)
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|ico|js)/
security: false
admin_area:
anonymous: true
pattern: ^/admin
provider: app_admin_provider
form_login:
provider: app_admin_provider
login_path: login_admin
username_parameter: sign_in[email]
password_parameter: sign_in[password]
check_path: login_check_admin
logout:
path: /logout_admin
target: /admin
salarie:
anonymous: true
pattern: ^/\w+
form_login:
provider: app_salarie_provider
login_path: login_salarie
username_parameter: sign_in[email]
password_parameter: sign_in[password]
check_path: login_check_salarie
logout:
path: /logout
target: /
# activate different ways to authenticate
# https://symfony.com/doc/current/security.html#firewalls-authentication
# https://symfony.com/doc/current/security/impersonating_user.html
# switch_user: true
# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
access_control:
- { path: ^/\w+/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/, roles: ROLE_USER }
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
有了这些文件,我似乎得到了我想要的结果!
无论如何谢谢你的回答,祝你有美好的一天o/