我想关闭我的完整站点,只访问经过身份验证的用户,但我想保留一些公开的路线。公共路线将是:
/
/消息
/登记
所有其他人都被锁定。我做了一个看起来像这样的防火墙:
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'));
}