我想關閉我的整個網站,只有獲得認證的用戶,但我想保留一些公共路線。公共路線將是:Symfony2鎖全部網站與防火牆
/
/新聞
/註冊
所有的吡唑類都被鎖定。 我做了一個防火牆,它看起來像這樣:
firewalls:
user_login:
pattern: ^/
anonymous: ~
user_area:
pattern: ^/
form_login:
login_path: _main_index #this is a route to/
logout:
path: _main_logout #this is a route to /logout
target: _main_index #this is a route to/
invalidate_session: false
access_control:
- { path: ^/news, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/registration, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/user-panel, roles: ROLE_ACTIVE_USER } #is this neccessary?
然後當我登錄到禁區(/用戶面板),它最高審計機關,我需要對自己充分驗證。
我將我的角色存儲在security.yml中,而不是數據庫中。
我希望你能幫助我!非常感謝你!
編輯: 我loginCheckAction看起來像這樣::
$encodedPassword = $this->get('user.user_service')->generatePasswordHash($user, $request->request->get('_password'));
if ($user->getPassword() == $encodedPassword) {
$user->setLastLoginOn(new \DateTime());
$this->em->user($rocker);
$this->em->flush();
$token = new UsernamePasswordToken($user, $user->getPassword(), 'user_area', array($user->getRoles()));
$request->getSession()->set('_security_user_area', serialize($token));
return $this->redirect($this->generateUrl('_user_panel'));
}
爲什麼兩個防火牆有相同的模式?這不會工作 –
我不知道這是如何工作,但如果我刪除user_login部分,該網站甚至不會調用loginCheckAction ... – lordjancso
我已經得到了這個。 user_login需要自動登錄(否則你需要實現UserProviderInterface)。 user_area實際上是關閉站點的防火牆。 – lordjancso