我在symfony 3中遇到了防火牆問題。從3天開始,我一直在爲此付出努力。我已經閱讀過文檔,並根據它做了所有的事情,但是應用程序並沒有像我期望的那樣工作。在一個應用程序中的Symfony 3,2防火牆
目標:所有頁面(登錄頁面除外)都需要登錄用戶。如果用戶沒有登錄,他應該重定向到/登錄頁面。就這樣。
根據這個網頁:
- http://symfony.com/doc/current/book/security.html
- http://symfony.com/doc/current/cookbook/security/form_login_setup.html
我已創建了登錄操作和表單控制器。 login_path和check_path使用相同的操作(根據文檔)。可能是security.yml中的某些內容是錯誤的,因爲它無法正常工作。我的設置:
security:
providers:
in_memory:
memory:
users:
aaa:
password: aaa
roles: 'ROLE_ADMIN'
encoders:
Symfony\Component\Security\Core\User\User: plaintext
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login_firewall:
pattern: ^/login
anonymous: ~
# form_login:
# login_path: /login
# check_path: /login
secured_area:
pattern: ^/
form_login:
login_path: /login
check_path: /login
default_target_path: homepage
logout:
path: /logout
target: /login
# access_control:
# - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
# - { path: ^/, roles: IS_AUTHENTICATED_FULLY }
我的登錄操作:
<?php
/**
* @Route("/login", name="login")
*/
public function loginAction(Request $request)
{
$authenticationUtils = $this->get('security.authentication_utils');
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render(
'security/login.html.twig',
array(
// last username entered by the user
'last_username' => $lastUsername,
'error' => $error,
)
);
}
?>
問題:
- 有了這個配置我不能登錄請求使用的登錄操作,但系統沒有。想認證我。
- 如果我在login_firewall防火牆取消註釋form_login,認證工作正常(我登錄),但我無法訪問網站(系統重定向我到登錄頁面,雖然我已經通過驗證。
- 我試着使用ACCESS_CONTROL,但行爲是一樣的2點。
請幫我的人,我敢肯定,這是簡單的東西,但我在Symfony的是新的,我沒有看到它。
UPDATE
感謝Tobias Xy我更正了security.yml。工作版本:
security:
providers:
in_memory:
memory:
users:
smt:
password: smt
roles: 'ROLE_ADMIN'
encoders:
Symfony\Component\Security\Core\User\User: plaintext
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: ~
form_login:
login_path: /login
check_path: /login
default_target_path:/
logout:
path: /logout
target: /login
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: IS_AUTHENTICATED_FULLY }
感謝您的第一次修復。一切都很完美。你讓我開心 :) – Tomeknr