我試圖在Symfony2中實現非常基本的身份驗證。以下是代碼的主要部分我實在看不出有什麼問題登錄symfony2
編輯 完整security.yml
jms_security_extra:
secure_all_services: false
expressions: true
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
in_memory:
memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
firewalls:
login:
pattern: ^/login
anonymous: ~
secured_area:
pattern: ^/
stateless: true
form_login:
login_path: /login
check_path: /login_check
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
這工作得很好,匿名用戶總是重定向到在loginAction控制器。
編輯 下面是完整的代碼
<?php
namespace AcmeBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
class SecurityController extends Controller {
public function loginAction() {
$providerKey = 'secured_area';
$token = new UsernamePasswordToken('test', 'test', $providerKey, array('ROLE_USER'));
$this->container->get('security.context')->setToken($token);
return $this->redirect($this->generateUrl('fronthomepage'));
}
}
我看不出有什麼問題,匿名用戶被重定向到的LoginAction,有創建身份驗證的用戶,保存令牌,比重定向到作爲認證用戶的安全區域。不幸的是,我的代碼以重定向循環結束,看起來像安全防火牆不接受用戶身份驗證。你有沒有看到任何問題?
,能不能請你傾倒所有security.yml代碼和所有的控制器代碼。 – 2013-03-24 21:25:29