我使用Symfony和Twig创建了一个登录页面。现在,我尝试在登录后检索用户名。但似乎我从SecurityController返回的用户对象是空的,因此Twig有渲染问题。我需要做什么才能获得UserObject?
security.yml
security:
encoders:
UserBundle\Entity\User:
algorithm: bcrypt
providers:
in_memory:
memory: ~
user_db_provider:
entity:
class: UserBundle:User
property: username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: ~
http_basic: ~
provider: user_db_provider
form_login:
login_path: /login
check_path: /login_check
logout:
path: /logout
target: /
SecurityController
类SecurityController扩展Controller {
/**
* @Route("/login", name="login_form")
*/
public function loginAction(){
$authenticationUtils = $this->get('security.authentication_utils');
$error = $authenticationUtils->getLastAuthenticationError();
$user = $this->getUser();
return $this->render(':security:login.html.twig',
array(
'user' => $user,
'error'=> $error,
)
);
}
/**
* @Route("/login_check", name="login_check")
*/
public function loginCheckAction() {}
/**
* @Route ("/logout", name="logout")
*/
public function logoutAction(){}}
用户(已实施Serialize,getter / setter方法)
/**
* @Table("users")
* @Entity
*/
class User implements UserInterface, \Serializable {
/**
* @Column(name="id", type="integer")
* @Id
* @GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @Column(length=25)
*/
private $username;
/**
* @Column(length=64)
*/
private $password;
/**
* @var array
* @Column(name="roles", type="json_array")
*/
private $roles = array();
枝条 - 模板
{% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
<div class="form-group">
{{ user.username }}
<a href="{{ path('logout') }}">Logout</a>
</div>
{% else %}
<form class="navbar-form navbar-left" action="{{ path('login_check') }}" method="post">
<div class="form-group">
<input type="text" class="form-control" name="_username" placeholder="Username"/>
<input type="password" class="form-control" name="_password" placeholder="Password"/>
<button type="submit" class="btn btn-default">Log In</button>
</div>
</form>
{% endif %}
{% if error is defined %}
<p class="navbar-text navbar-right">{{ error.messageKey|trans(error.messageData, 'security')}}</p>
{% endif %}