我正在试图弄清楚如何有两个单独的登录页面:页面的默认登录.com和特定用户的登录,例如路由/special.
在一个SF2项目中,这很容易实现吗?
更新:
我的防火墙中有以下配置(我正在使用fosub)
providers:
custom:
id: ib.user_provider
fos_userbundle:
id: fos_user.user_manager
my_fos_facebook_provider:
id: my.facebook.user
firewalls:
special:
pattern: ^/special
form_login:
provider: fos_userbundle
login_path: /special/login
check_path: /special/login_check
use_referer: false
default_target_path: /special
success_handler: ib.login_handler
provider: custom
main:
pattern: ^/.*
form_login:
provider: fos_userbundle
login_path: /login
check_path: /login_check
use_referer: false
default_target_path: /
provider: custom
fos_facebook:
always_use_default_target_path: true
app_url: "http://apps.facebook.com/%facebook_app_id%/"
server_url: "http://aw.com/aw/web/app_dev.php/"
login_path: /login
check_path: /login_check/facebook
default_target_path: /checkFB
success_handler: facebook_auth_success_handler
provider: my_fos_facebook_provider
logout:
#handlers: ["fos_facebook.logout_handler"]
target: /
anonymous: ~
Run Code Online (Sandbox Code Playgroud)
在ib.login_handler中,我有以下内容:
public function onAuthenticationSuccess(Request $request,TokenInterface $token)
{
if ($this->security->isGranted('ROLE_CATEGORIZER'))
{
$response = new RedirectResponse($this->router->generate('MyCoBundle_mailAdmin_index'));
}
return $response;
}
Run Code Online (Sandbox Code Playgroud)
有了这个配置,如果我去mydomain.com/special我得到以下错误:Fehler:Umleitungsfehler(英文:错误:重定向错误)
更新:
在chrome中我得到:找不到"GET/special/login"的路由
404 Not Found - NotFoundHttpException
1 linked Exception: ResourceNotFoundException »
Run Code Online (Sandbox Code Playgroud)
我没有这条登录路径的特殊路线.我想要实现的只是,特殊用户只能访问路径/特殊下的页面.
有可能,您可以定义许多受保护区域=>许多防火墙.
让我们看看这个app/config/security.yml配置知道如何:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
special_area:
pattern: ^/special
anonymous: ~
form_login:
check_path: /special/login_check
login_path: /special/login
logout:
path: /special/logout
target: /
general_area:
pattern: ^
anonymous: ~
form_login:
check_path: /login_check
login_path: /login
logout:
path: /logout
target: /
access_control:
- { path: ^/_internal, role: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/special/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
Run Code Online (Sandbox Code Playgroud)
请注意,special_area必须在genereal_area之上定义,因为general_area的模式与其他模式匹配...
你必须在bundle routing.yml中添加什么:
_security_login_special:
pattern: /special/login
defaults: { _controller: FOSUserBundle:Security:login }
_security_check_special:
pattern: /special/login_check
_security_logout_special:
pattern: /special/logout
Run Code Online (Sandbox Code Playgroud)
并且您必须为general_area添加另一个角色,因此您需要覆盖FOSUserManager并使其在用户加载时添加此补充角色...(更多信息请访问:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/1.2. 0/Resources/doc/user_manager.md)
| 归档时间: |
|
| 查看次数: |
5221 次 |
| 最近记录: |