我正在使用 Symfony 2.6.6。还有我的结构文件夹
ExampleBundle
Controller
LoginController.php
Other1Controller.php
Other2Controller.php
...
LoginController
已经loginAction()
并且loginCheckAction()
LoginAction()
将显示登录表单并loginCheckAction()
进行检查。
我看到一些教程来创建LoginController.php
. 用户登录后通过检查我设置:
$session->set('login', $login);
我的目的是:所有用户必须登录才能访问我的网络应用程序的所有页面。
但是我的网站有很多控制器和操作(页面)。
我的想法是:检查所有控制器的所有操作中是否存在“登录”会话,如果不存在则重定向到登录操作。
但我认为这太手动了。Symfony 最好的方法是什么?
更新 1:
之后我尝试在我的security.yml
文件中添加一些代码。如果用户未登录,它会重定向到登录页面,但它总是重定向到登录页面。我想如果用户登录(有“登录”部分)它可以访问其他页面。怎么做 谢谢
# .../security.html
security:
firewalls:
ex_login:
pattern: ^/ex/login$
anonymous: ~
security: false
secured_area:
pattern: ^/ex
form_login:
check_path: /ex/logincheck
login_path: /ex/login
logout:
path: /ex/logout
target: /ex
更新 2
这是我的Login Controller
loginAction() {
$session = $this->getRequest()->getSession();
if ($session->has('login')) {
//redirect to home/index
}else {
//render login form
}
}
logincheckAction(Request $request) {
if($request->getMethod()=='POST') {
// check user input (username && password) in database
if (ok){
$session->set('login', 'true');
//redirect to home/index
}
else {
//redirect to login/index
}
}else {
//redirect to login/index
}
}
logoutAction() {
//remove login session
// redirect to login/index
}
这是我的 Other1Controller.php
indexAction(){
echo 'page1';
}
它总是重定向到登录页面。在我填写我的字段并提交登录后,它仍然重定向到登录页面?我该如何解决谢谢。